Javascript 使用requirejs加载模块的前缀

Javascript 使用requirejs加载模块的前缀,javascript,requirejs,Javascript,Requirejs,我的应用程序有不同的模块,它们以以下方式请求文件: var urlRepository = require('modules/common/urlrepository/urlrepository'); require(['modules/common/urlrepository/urlrepository'],function(urlrepository){ }); 此外,还需要使用以下方式提供一些模块: var urlRepository = require('modules/co

我的应用程序有不同的模块,它们以以下方式请求文件:

var urlRepository = require('modules/common/urlrepository/urlrepository');
require(['modules/common/urlrepository/urlrepository'],function(urlrepository){
    });
此外,还需要使用以下方式提供一些模块:

var urlRepository = require('modules/common/urlrepository/urlrepository');
require(['modules/common/urlrepository/urlrepository'],function(urlrepository){
    });
现在,假设我在两个文件夹中有相同的结构,如:

    folder1
    |
    modules
    |
    common

    folder2
    |
    modules
    |
    common
是否有任何方法可以定义全局变量,如
currentFolder=“folder2”
&根据变量,它将加载相应的模块

我不想更改每个文件中的现有代码。
我需要在require调用之前追加的内容。

假设folder1和folder2是baseUrl目录的子目录:

要使用folder1,请将其放在主js文件中:

require.config({paths: {"modules": "folder1/modules"}})
require.config({paths: {"modules": "folder2/modules"}})
要使用folder2,请将其放在主js文件中:

require.config({paths: {"modules": "folder1/modules"}})
require.config({paths: {"modules": "folder2/modules"}})

不建议这样做,但我认为这可以通过在require调用前面放置一个代理来实现。
您可以定义自己的require函数,该函数从内部调用实际require。您可以将对url所做的更改放在自己的需要中检索

示例代码如下所示

var oldrequire = require;
require = function(){
    var prefix = global.mode;
    if(typeof arguments[0]==='string'){
        oldrequire(prefix+arguments[0]);
        return;
    }
    var arr = arguments[0];
    if(arr instanceof Array){
        for(var index in arr){
            arr[index] = prefix+arr[index];
        }
        oldrequire(arguments);
    }
}
您可能还需要重写define函数,因为它使用相对require来获取文件


注意:请再说一遍。不建议这样做,因为您不确定特定的require调用的行为。

您有这样的脚本标记吗?对以类似的方式.path config可以用作文件的快捷方式。如果该文件需要使用相对路径的其他文件,则该文件不起作用,因为在再次使用相对路径的情况下,baseURL将被追加而不是解析的url。因此,无法使用路径配置来完成上述任务。