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

Javascript RequireJs shim:如何防止define(){…}中的模块名重复?,javascript,requirejs,Javascript,Requirejs,我有以下代码: requirejs.config({ shim: { 'underscore': { exports: '_' }, 'backbone': { deps: ['underscore', 'jquery'], exports: 'Backbone' } } }); define( ['underscore', 'bac

我有以下代码:

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);
    }
);
所有这些控制台日志都会打印一些东西。但是,我想知道是否有可能从加载的模块中删除默认导出的模块名,即在模块内部有未定义的“主干”和“返回”?使用shim是否有可能,或者我只是想错了吗?

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

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

因此,我认为您无法阻止定义全局版本