我想在整个代码库中使用Backbone插件,但是我不希望每次想要使用Backbone时都需要它。现在,我的脚本看起来像:
define(
['backbone','backbone.eventstreams'],
function(Backbone){
//...
}
);
Backbone.EventStreams
只是扩展Backbone
,因此每当我包含Backbone时,无需将其单独添加到每个文件中,就可以自动使用该功能。
Pyykkis,在他的TodoMVC示例中,simply requires it at the entry point似乎可以在整个过程中使用它。然而,这对我来说就像是一个黑客。
这种方法有什么缺点,如果是这样,解决这个问题的正确方法是什么?
答案 0 :(得分:0)
在使用requireJS的项目中不应该存在任何全局变量,这是使用requireJS的动机之一,即避免污染全局命名空间...只需在入口点使用require doesnt make加载任何模块全球..查看此链接,这可能会有所帮助global variables in requireJS
答案 1 :(得分:0)
在入口点main.js文件中配置requirejs
require.config({
paths: {
backbone: libs / backbone,
underscore: libs / underscore,
jquery: libs / jquery
},
shim: {
'backbone': {
//These script dependencies should be loaded before loading
//backbone.js
deps: ['underscore', 'jquery'],
//Once loaded, use the global 'Backbone' as the
//module value.
exports: 'Backbone.EventStreams'
}
});
无论何时定义或需要主干,您都可以直接访问Backbone.EventStreams对象上的方法
答案 2 :(得分:0)
因此,根据您所说的内容,此插件依赖于Backbone。 Backbone不支持AMD,因此您需要使用shim命令加载它。
要简单加载Backbone,你需要这样的东西。
require.config({
paths: {
backbone: libs / backbone,
underscore: libs / underscore,
jquery: libs / jquery
},
shim: {
'backbone': {
deps: ['underscore', 'jquery'],
exports: 'Backbone'
}
});
现在使用Backbone.EventStreams插件,如你所说,这个插件依赖于Backbone,所以你需要这样的东西。
require.config({
paths: {
backbone: libs / backbone,
underscore: libs / underscore,
jquery: libs / jquery
backboneEventStreams: libs / BackboneEventStreams (path to js file)
},
shim: {
'backbone': {
deps: ['underscore', 'jquery'],
exports: 'Backbone'
},
'BackboneEventStreams' :{
deps:['Backbone'],
exports: 'BackboneEventStreams'
}
});
使用“导出”指定要在应用中为该模块使用的名称。
希望有所帮助