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。因此,无法使用路径配置来完成上述任务。