要求js shim不适用于此代码

Raj*_*ian 3 requirejs

我有以下代码.

<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>
Run Code Online (Sandbox Code Playgroud)

函数参数B未指向Backbone.相反,它被记录为undefined.

我按照以下帖子到达了这一点:

使用RequireJS通过填充程序加载Highcharts并保持jQuery依赖性

我看到两个underscorebackboneJavaScript文件都在firebug下载了.

Sim*_*ith 5

Underscore也不是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)
});
Run Code Online (Sandbox Code Playgroud)

您将看到正在下载Underscore,但因为它未被定义为正确的模块,RequireJS只会将其视为普通的JS文件,并且不会获得返回值