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

RequireJs shim: how to prevent duplicate module names inside define() {...}?

本文关键字:模块 shim 何防止 define RequireJs      更新时间:2023-09-26

我有以下代码:

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 .js 在全局命名空间中定义的符号。(它们应该是window._或窗口。骨干)。

据我了解,synbols 的"本地"版本是由 requirejs 定义的,因为您明确指定了"导出"变量名称。

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