4

我有以下代码。

<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.

我遵循以下帖子并到达这一点:

使用 RequireJS 通过 shim 加载 Highcharts 并维护 jQuery 依赖项

我在 firebug 中看到underscore和JavaScript 文件都被下载了。backbone

4

2 回答 2

6

下划线也不兼容 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 文件并且没有得到返回值

于 2013-01-31T16:18:09.350 回答
1

最新版本的 Underscore(撰写本文时约为 1.6.0)与 AMD 兼容。不要将其用作垫片,否则您可能会遇到问题。

于 2014-03-02T04:41:18.840 回答