Написах уеб приложение, което използва 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);
});
За съжаление сега кодът в този блок НИКОГА не се изпълнява.