我有以下代码。
<script src="js/libs/require.js"></script>
<script>
requirejs.config({
baseUrl:'js/modules/',
paths:{
'bbn':'../libs/backbone',
'underscore':'../libs/underscore'
},
shim:{
'bbn':{
exports:'B',
deps:['underscore']
}
}
})
requirejs(['bbn'], function(B){
console.log(B)
});
</script>
函数参数B
未指向Backbone
。而是将其记录为undefined
。
我按照以下帖子到达了这一点:
Loading Highcharts via shim using RequireJS and maintaining jQuery dependency
我看到underscore
和backbone
JavaScript文件都在firebug中下载。
答案 0 :(得分:5)
下划线也不是AMD兼容,所以请确保shim
也是如此:
requirejs.config({
baseUrl:'js/modules/',
paths:{
'bbn':'../libs/backbone',
'underscore':'../libs/underscore'
},
shim:{
'bbn':{
exports:'Backbone',
deps:['underscore']
},
'underscore': {
exports: '_'
}
}
})
requirejs(['bbn'], function(Backbone){
console.log(Backbone)
});
你会看到下载的是Underscore,但因为它没有被定义为正确的模块,所以RequireJS只是将它视为普通的JS文件并且没有获得返回值
答案 1 :(得分:1)
Underscore的最新版本(编写本文时为~1.6.0)与AMD兼容。不要将它用作垫片,否则可能会遇到问题。