我不确定在shim配置上使用“exports”,按照requireJS API上的示例,我可以使用Backbone(大写字母B)将其导出到全局范围。 这意味着它将是一个窗口对象属性。 但我意识到我被迫使用该名称,我不能通过其他参考名称导出它,即:“MyGlobalBackbone”
require.config({
paths: {
backboneAlias:'backbone'
},
shim : {
backboneAlias : {
deps : [ 'underscore', 'jquery-1.9.1' ],
exports : 'MyGlobalBackbone'
}
}
});
require(['backboneAlias'],function(backboneAsAliasDependency){
console.log(backboneAsAliasDependency);//Loaded Ok
console.log(MyGlobalBackbone); //Uncaught ReferenceError: MyGlobalBackbone is not defined
});
此代码仅在我使用“Backbone”而非“MyGlobalBackbone”...
时才有效答案 0 :(得分:7)
实际上你反过来说:shimming不会将变量导出到全局范围,它从全局范围导入它。名称(“Backbone”)由Backbone的作者设置,这是您在shim
配置元素中向RequireJS解释的部分。
答案 1 :(得分:0)
在API中查看:
http://requirejs.org/docs/api.html#config-shim
看看这句话:
//加载后,使用全局'Backbone'作为
//模块值。
让我们以这种方式看待它,你会理解它:
//加载后,use a global variable 'Backbone' that defined by the backbone vendor
作为
//模块值。
答案 2 :(得分:-1)
您应该使用地图来制作别名。
require.config({
paths: {
...
},
shim : {
...
},
map: {
'*': {
'MyGlobalBackbone': 'Backbone'
}
}
});
这将允许您对所有(*)模块使用 MyGlobalBackbone 而不是 Backbone 。