Модули RequireJS загружаются не по порядку при загрузке одного модуля в другой

Я написал веб-приложение, которое использует requirejs для AMD:

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

Затем я использовал миндаль и r.js, чтобы скомпилировать его в один файл javascript, используя конфигурацию сборки:

({
    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. Run (function($) { $.fn.plugin = function(options) { return this; }; })(window.jQuery);

Очевидно, что (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);
});

К сожалению, теперь код внутри этого блока НИКОГДА не выполняется.


person Matthew James Davis    schedule 09.07.2013    source источник