将一个模块加载到另一个模块时,RequireJS模块无序加载

时间:2013-07-09 19:59:19

标签: javascript jquery jquery-plugins requirejs almond

我编写了一个使用requirejs for AMD的Web应用程序:

require(dependencies, function(dependencies) { 
    (function($) {
        $.fn.plugin = function(options) { return this; };
    })(window.jQuery);
});

然后我使用almond和r.js将它编译成单个javascript文件,使用build config:

({
    baseUrl: ".",
    paths: {
        'jquery' : 'vendor/jquery-1.9.1.min'
        'almond' : "../node_modules/almond/almond"
    },
    name : "almond",
    include : "main",
    out : "plugin.js",
    wrap : true
})

接下来,我想在另一个应用程序中使用此插件,也基于requirejs。我在这里:

require.config({ paths: { 'jquery': 'vendor/jquery-1.9.1.min' } });
require(['jquery','plugin'], function ($) {
    $('#plugin').plugin(options);
});

但是,代码无序加载:

  1. 加载jquery和插件js文件。
  2. 执行$('#plugin')。plugin(options)。
  3. 运行(function($){$ .fn.plugin = function(options){return this;};})(window.jQuery);
  4. 显然,(2)是一个错误,因为(3)需要先运行。问题是,为什么?

    更新1

    一个建议的解决方案是将第一个代码块更改为:

    define(dependencies, function(dependencies) { 
        (function($) {
            $.fn.plugin = function(options) { return this; };
        })(window.jQuery);
    });
    

    编译完成后,会变为:

    define("main", dependencies, function(dependencies) { 
        (function($) {
            $.fn.plugin = function(options) { return this; };
        })(window.jQuery);
    });
    

    不幸的是,现在这个块中的代码永远不会被执行。

0 个答案:

没有答案