我编写了一个使用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);
});
但是,代码无序加载:
显然,(2)是一个错误,因为(3)需要先运行。问题是,为什么?
一个建议的解决方案是将第一个代码块更改为:
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);
});
不幸的是,现在这个块中的代码永远不会被执行。