1

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

var urlRepository = require('modules/common/urlrepository/urlrepository');

还需要使用以下方式的一些模块:

require(['modules/common/urlrepository/urlrepository'],function(urlrepository){
    });

现在,假设我在 2 个文件夹中具有相同的结构,例如:

    folder1
    |
    modules
    |
    common

    folder2
    |
    modules
    |
    common

有什么方法可以让我定义一个全局变量,如currentFolder ="folder2" & ,这取决于它将加载相应模块的变量。

我不想更改每个文件中的现有代码。我想要在我的 require 调用之前附加的东西。

4

2 回答 2

0

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

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

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

要使用文件夹 2,请将其放入主 js 文件中:

require.config({paths: {"modules": "folder2/modules"}})
于 2013-05-16T16:49:42.890 回答
0

不推荐,但正如我所见,这可以通过在 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);
    }
}

您可能还需要覆盖定义函数,因为它使用相对要求来获取文件。

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

于 2013-06-06T11:42:32.210 回答