Загрузка модулей 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);
});
Однако код загружается не по порядку:
- Загрузите jquery и плагин js файлы.
- Запустите $('#plugin'). Plugin (параметры).
- 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);
});
К сожалению, теперь код внутри этого блока НИКОГДА не выполняется.