RequireJs shim:如何防止在define(){...}中重复的模块名称?

时间:2012-08-16 20:27:23

标签: javascript requirejs

我有以下代码:

requirejs.config({
    shim: {
        'underscore': {
            exports: '_'
        },
        'backbone': {
            deps: ['underscore', 'jquery'],
            exports: 'Backbone'
        }
    }
});


define(
    ['underscore', 'backbone'],
    function (underscoreLocal, backboneLocal) {

    console.log(underscoreLocal);
    console.log(backboneLocal);
    console.log(_);
    console.log(Backbone);
    }
);

所有这些控制台记录都会打印出来。但是,我想知道是否可以从加载的模块中删除默认导出的模块名称,即。让'Backbone'和'_'在模块内返回undefined?它是否有可能与垫片,或者我只是认为这是错误的方式?

1 个答案:

答案 0 :(得分:0)

我认为回调中的“_”和“Backbone”符号是由backbone.js在全局命名空间中定义的符号。 (它们应该是window._或window.Backbone)。

据我所知,synbols的“本地”版本由requirejs定义,因为你明确指定了“exports”变量名。

所以我认为你不能阻止定义全局版本。