Javascript RequireJS——始终使用库加载依赖项
有一个主干插件,我想在我的整个代码库中使用,但我不想每次使用它时都需要它和主干一起使用。现在,我的脚本看起来像:Javascript RequireJS——始终使用库加载依赖项,javascript,requirejs,amd,Javascript,Requirejs,Amd,有一个主干插件,我想在我的整个代码库中使用,但我不想每次使用它时都需要它和主干一起使用。现在,我的脚本看起来像: define( ['backbone','backbone.eventstreams'], function(Backbone){ //... } ); Backbone.EventStreams只是扩展了Backbone,因此只要我包含Backbone,就可以自动使用该功能,而不必将其单独添加到每个文件中 Pykkis,在他的TodoMVC示例中,这似乎使它
define(
['backbone','backbone.eventstreams'],
function(Backbone){
//...
}
);
Backbone.EventStreams
只是扩展了Backbone
,因此只要我包含Backbone,就可以自动使用该功能,而不必将其单独添加到每个文件中
Pykkis,在他的TodoMVC示例中,这似乎使它在整个过程中都可用。然而,这对我来说就像是一个黑客
这种方法有缺点吗?如果有,正确的解决方法是什么?在使用requireJS的项目中不应该有任何全局变量,这是使用requireJS的动机之一,这是为了避免污染全局名称空间…仅通过使用require在入口点加载任何模块不会使其成为全局的..查看此链接,这可能会有帮助在入口点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对象上的方法。因此,根据您所说的,这个插件依赖于主干。 主干网不支持AMD,所以您需要使用shim命令来加载它 要简单地加载主干网,您需要这样的东西
require.config({
paths: {
backbone: libs / backbone,
underscore: libs / underscore,
jquery: libs / jquery
},
shim: {
'backbone': {
deps: ['underscore', 'jquery'],
exports: 'Backbone'
}
});
现在要使用Backbone.EventStreams插件,正如您所说,这个插件依赖于主干,所以您需要这样的东西
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'
}
});
使用导出指定要在应用程序中用于该模块的名称
希望这能有所帮助我明白在RequireJS项目中不应该有全局变量。我想让
主干网.EventStreams
作为主干网的一部分免费加载,只要我需要主干网
。更新问题以澄清。请参阅