Backbone.js RequireJS/BackboneJS应用程序-需要添加依赖项的建议
我正在使用backboneJS/requireJS开发一个应用程序。我已经确定了大约20个视图,对于所有使用jquery、backbonejs和下划线的视图。所以我的前三个依赖项总是这三个Backbone.js RequireJS/BackboneJS应用程序-需要添加依赖项的建议,backbone.js,requirejs,Backbone.js,Requirejs,我正在使用backboneJS/requireJS开发一个应用程序。我已经确定了大约20个视图,对于所有使用jquery、backbonejs和下划线的视图。所以我的前三个依赖项总是这三个 define([ 'jquery', 'underscore', 'backbone', .... ], function($, _, Backbone, ..){ ..... }); 是否有一种方法可以跳过并在全局级别的某个地方说,将这三个模块包含在所有模块中,从而避免在所有文件中重复
define([
'jquery',
'underscore',
'backbone',
.... ], function($, _, Backbone, ..){
.....
});
是否有一种方法可以跳过并在全局级别的某个地方说,将这三个模块包含在所有模块中,从而避免在所有文件中重复写入它们?有几种方法可以做到这一点。一种是将
define
包装在您自己的myDefine
(或其他任何内容)中:
但这显然仍然需要您在回调中指定对象。因此,更好的选择可能是将$
、
和主干
附加到应用程序名称空间(如果您不希望它们是全局的)。然后你可以这样做:
myDefine = function(dependencies, callback) {
var defaults = ['jquery', 'underscore', 'backbone'];
if (myApp.$ && myApp._ && myApp.Backbone) {
define(dependencies, callback);
} else {
require(defaults, function($, _, Backbone) {
myApp.$ = $;
myApp._ = _;
myApp.Backbone = Backbone;
define(dependencies, callback);
}
}
};
myDefine(['MyView'], function(MyView) {
// use myApp.$, myApp._, myApp.Backbone
});
如果您不关心名称空间,那么您可以在不执行myApp
步骤的情况下执行上述操作,并让libs保持在窗口中
请注意,以上所有内容都未经测试
当然,更简单的选择是在任何模块之前同步加载jQuery、下划线和主干。谢谢Glortho!我将遵循第二个建议。
myDefine = function(dependencies, callback) {
var defaults = ['jquery', 'underscore', 'backbone'];
if (myApp.$ && myApp._ && myApp.Backbone) {
define(dependencies, callback);
} else {
require(defaults, function($, _, Backbone) {
myApp.$ = $;
myApp._ = _;
myApp.Backbone = Backbone;
define(dependencies, callback);
}
}
};
myDefine(['MyView'], function(MyView) {
// use myApp.$, myApp._, myApp.Backbone
});