RequireJS——总是加载依赖库
RequireJS--always load dependency with library
有一个Backbone插件,我想在我的整个代码库中使用,但我不想每次我想使用它时都需要它与Backbone一起使用。现在,我的脚本看起来像:
define(
['backbone','backbone.eventstreams'],
function(Backbone){
//...
}
);
Backbone.EventStreams
只是扩展了Backbone
,所以当我包含Backbone时,无需将其单独添加到每个文件中,就可以自动使用该功能。
这种方法有什么缺点吗?如果有,解决这个问题的正确方法是什么?
在使用requireJS的项目中不应该有任何全局变量,这是使用requireJS的动机之一,这是为了避免污染全局命名空间…仅仅通过在入口点使用require加载任何模块并不能使其成为全局的。查看这个链接,这可能对requireJS中的全局变量有帮助
在你的入口点main.js文件中配置需求
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时,你可以直接访问backbone上的方法。EventStreams对象
所以根据你所说的,这个插件依赖于Backbone。主干不支持AMD,所以你需要使用shim命令来加载。
要简单加载Backbone,你需要这样做:
require.config({
paths: {
backbone: libs / backbone,
underscore: libs / underscore,
jquery: libs / jquery
},
shim: {
'backbone': {
deps: ['underscore', 'jquery'],
exports: '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'
}
});
使用Exports来指定你想要在应用中使用的模块的名称。
希望有所帮助
相关文章:
- 使用多个依赖项加载只进行一次AJAX调用
- Dojo AMD加载程序执行定义具有空/缺失依赖项的回调
- 依赖于缓慢加载javascript的UI
- 要求创建空模块作为依赖项加载程序
- 避免将lib依赖项与webpack+handlebas加载程序捆绑在一起
- 在angularjs中注入依赖项之前加载api
- 如何使AngularJS控制器依赖于通过ajax加载在rootScope上的值
- 使用Require.js按照依赖关系的顺序加载JavaScript
- Dojo 加载器不加载回调中使用的小部件依赖项
- 我删除了package.json和Gruntfile.js,现在Grunt不会加载依赖项
- 在Dynamics窗体中加载多个依赖的javascript web资源
- 使用Sencha's app.json来管理Javascript加载顺序和依赖关系
- 通过异步加载自动列出require.js依赖项以进行r.js优化
- jasmine-maven插件加载源文件及其依赖关系
- 打开一个模态(在Codeigniter中),该模态从依赖于phpvar的URL加载(在iframe中)内容
- 嵌套依赖主干.js具有 require.js 主干的视图.js导致视图作为对象而不是函数加载
- 无法以角度加载新的模块依赖项
- 角度种子项目 - 角度加载器-js 依赖项
- EmberJS-最小依赖加载
- 依赖加载和文件系统模拟