我的应用程序有不同的模块,它们通过以下方式请求文件:
var urlRepository = require('modules/common/urlrepository/urlrepository');另外,还需要一些模块,使用以下方式:
require(['modules/common/urlrepository/urlrepository'],function(urlrepository){
});现在,假设我在两个文件夹中有一个相同的结构,如下所示:
folder1
|
modules
|
common
folder2
|
modules
|
common有没有什么方法可以让我定义一个像currentFolder ="folder2"这样的全局变量&根据变量的不同,它将加载相应的模块。
我不想更改每个文件中的现有代码。我想要一些东西,这将被追加之前,我的要求调用。
发布于 2013-05-17 00:49:43
假设folder1和folder2是baseUrl目录的子目录:
要使用folder1,请将以下代码放在主js文件中:
require.config({paths: {"modules": "folder1/modules"}})要使用folder2,请将以下代码放在主js文件中:
require.config({paths: {"modules": "folder2/modules"}})发布于 2013-06-06 19:42:32
不推荐,但我认为这可以通过在请求调用前放置一个代理来实现。
您可以定义自己的请求函数,该函数从内部调用实际的请求。您可以将您的更改放到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);
}
}您可能还需要覆盖定义函数,因为它使用相对请求来获取文件。
注:再说一遍。不建议这样做,因为您不确定特定的require调用可能的行为。
https://stackoverflow.com/questions/16563331
复制相似问题