首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用requirejs加载模块的前缀

使用requirejs加载模块的前缀
EN

Stack Overflow用户
提问于 2013-05-15 19:02:35
回答 2查看 920关注 0票数 1

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

代码语言:javascript
运行
复制
var urlRepository = require('modules/common/urlrepository/urlrepository');

另外,还需要一些模块,使用以下方式:

代码语言:javascript
运行
复制
require(['modules/common/urlrepository/urlrepository'],function(urlrepository){
    });

现在,假设我在两个文件夹中有一个相同的结构,如下所示:

代码语言:javascript
运行
复制
    folder1
    |
    modules
    |
    common

    folder2
    |
    modules
    |
    common

有没有什么方法可以让我定义一个像currentFolder ="folder2"这样的全局变量&根据变量的不同,它将加载相应的模块。

我不想更改每个文件中的现有代码。我想要一些东西,这将被追加之前,我的要求调用。

EN

回答 2

Stack Overflow用户

发布于 2013-05-17 00:49:43

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

要使用folder1,请将以下代码放在主js文件中:

代码语言:javascript
运行
复制
require.config({paths: {"modules": "folder1/modules"}})

要使用folder2,请将以下代码放在主js文件中:

代码语言:javascript
运行
复制
require.config({paths: {"modules": "folder2/modules"}})
票数 0
EN

Stack Overflow用户

发布于 2013-06-06 19:42:32

不推荐,但我认为这可以通过在请求调用前放置一个代理来实现。

您可以定义自己的请求函数,该函数从内部调用实际的请求。您可以将您的更改放到url中,以便在自己的请求中检索。

示例代码可以如下所示。

代码语言:javascript
运行
复制
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调用可能的行为。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16563331

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档