Загрузка модулей RequireJS при загрузке одного модуля в другой

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

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

Затем я использовал almond и 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 (параметры).
  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);
});

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

0 ответов

Другие вопросы по тегам