【问题标题】:What is required to achieve something like this?实现这样的目标需要什么?
【发布时间】:2015-07-29 13:47:39
【问题描述】:

我的问题不是关于编程技巧,而是关于 lib 文件和框架文件。例如,我已经有:jquery.js 和 jquery.ui.js,在 <header> 块中声明。

假设我在 JavaScript 文件中定义了一些东西,如下所示:

define("app/ui/dialogs/delete_tweet_dialog", ["module", "require", "exports", "core/component", "app/ui/with_dialog", "app/ui/dialogs/with_modal_tweet"], function(module, require, exports) {
    function deleteTweetDialog() {
        this.defaultAttrs({
            cancelSelector: ".cancel-action",
            deleteSelector: ".delete-action"
        }), this.openDeleteTweet = function(a, b) {
            this.attr.sourceEventData = b, this.displayTweet(b.tweetId, {
                modal: "delete"
            }), this.id = b.id, this.open()
        }, this.deleteTweet = function() {
            this.trigger("uiDidDeleteTweet", {
                id: this.id,
                sourceEventData: this.attr.sourceEventData
            })
        }, this.deleteTweetSuccess = function(a, b) {
            this.trigger("uiDidDeleteTweetSuccess", this.attr.sourceEventData), this.close()
        }, this.restoreFocusToTweet = function(a) {
            $(a.target).is(this.$dialog) && this.activeEl && this.trigger($(this.activeEl).closest(".tweet"), "uiShouldAddFocusStyle")
        }, this.after("initialize", function() {
            this.on("click", {
                cancelSelector: this.close,
                deleteSelector: this.deleteTweet
            }), this.on(document, "uiOpenDeleteDialog", this.openDeleteTweet), this.on(document, "dataDidDeleteTweet", this.deleteTweetSuccess), this.on(document, "uiDialogRestorePreviousFocus", this.restoreFocusToTweet), this.on(document, "uiCloseDeleteTweetDialog", this.close)
        })
    }
    var defineComponent = require("core/component"),
        withDialog = require("app/ui/with_dialog"),
        withModalTweet = require("app/ui/dialogs/with_modal_tweet"),
        DeleteTweetDialog = defineComponent(deleteTweetDialog, withDialog, withModalTweet);
    module.exports = DeleteTweetDialog
});  
  • 我需要什么才能使上述代码工作?
  • jQuery.js 是单独提供[模块、要求、导出],还是需要添加其他东西?
  • 一旦我做了一个与这个类似的定义,我怎么能从其他代码中调用它?

我发现了这个:

定义( module_id /可选/, [依赖项] /可选/, 定义函数/用于实例化模块或对象的函数/ );

来自:http://addyosmani.com/writing-modular-js/

但是,我仍然不明白如何调用定义?谷歌上没有教程。

【问题讨论】:

  • 你应该在这里阅读:stackoverflow.com/help/how-to-ask。 Stackoverflow 不是教学服务,它是用于解决代码中的问题。发布一堆代码,而没有任何暗示您要实现什么或问题是什么,这将使任何人都很难提供帮助。
  • 上面的代码很容易理解。问题在于,要使上述自定义定义在您的其余代码中起作用,需要什么。
  • 您似乎在尝试使用require.js
  • @k0pernikus,这个文件有必要吗?
  • 您发布的整个代码示例看起来像 require.js。它不仅是要添加的文件,更是您必须首先了解的代码范例。关注文档。

标签: javascript jquery


【解决方案1】:

您显示的代码是作为 AMD 编写的。 RequireJS 是这里可能用到的库。

在此处了解更多信息:http://requirejs.org/

【讨论】:

  • 是的,AMD。我无法在他们的脚本中找到 require.js。
  • @Michael Johnson 他们可能是从 CDN 调用它...无论如何,专注于您需要从该代码中获得的功能。如果您不需要requirejs,请不要使用它。将它们的代码视为已加载模块(依赖项)的回调,第 2 行中的函数是正在执行的函数。此外,您可能还需要进一步挖掘才能获得其他模块。
  • Ziv Levy,感谢您的回复。我正在阅读这篇文章:addyosmani.com/writing-modular-js,它解释的很多事情都是正确的。唯一的问题是它没有显示自定义模块是如何被实际调用的。你知道吗?
  • @MichaelJohnson - 据我了解,AMD 模块只能在其他 AMD 模块或系统下加载。 requirejs 的根模块负责加载第一个,然后是它的依赖项......等等......花一两个小时在requirejs 站点阅读更多关于它的信息并制作一个简单的“待办事项”教程与requirejs。当您先做简单的事情时,一切都会变得更加清晰:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-24
  • 2020-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多