requirejs重复路径条目不起作用

requirejs duplicate paths entries not working

本文关键字:不起作用 路径 requirejs      更新时间:2023-09-26

我有以下代码作为研究问题的示例。在这段代码中,"js1和js2-loaded"从未被调用,也没有错误。我试着调试以记录requirejs中的任何错误,但找不到根本原因。

         require.config({
            paths: {
                jQuery : "jquery",
                underScore : "underscore-min",
                backBone : "backbone-min",
                js1 : "js",
                js2: "js"
            },
            shim: {
                'jQuery': {
                    exports: '$'
                },
                'underScore': {
                    exports: '_'
                },
                'backBone': {
                    deps: ['underScore', 'jQuery'],
                    exports: 'Backbone'
                }
            },
            waitSeconds: 0
        });
    require(["jQuery"], function(){
            require(["underScore"], function(){
                require(["backBone"], function(){
                        require(["js1","js2"], function(){
                            console.log('js1 and js2 loaded');
                        });
                });
            });
        });

您没有得到任何错误,因为您设置了waitSeconds: 0,它禁用了RequireJS的超时。请参阅文档。

对此使用paths是行不通的。为了能够以两个不同的名称加载相同的实际模块,您需要使用map:

map: {
    "*": {
        js2: "js1"
    }
}

请注意,这不会创建模块的两个实例。如果比较需要js1js2时得到的模块对象,您会发现它们是同一个对象。如果您想获得一个对象的多个实例,那么您应该为这种用法设计代码。