8

我注意到在文档中有一种方法可以将自定义配置传递给模块

requirejs.config({
    baseUrl: './js',
    paths: {
        jquery: 'libs/jquery-1.9.1',
        jqueryui: 'libs/jquery-ui-1.9.2'
    },
    config: {
        'baz': {
            color: 'blue'
        }
    }
});

然后您可以从模块访问:

define(['module'], function (module) {        
    var color = module.config().color; // 'blue'
});

但是还有一种方法可以访问顶级路径配置,像这样吗?

define(['module', 'require'], function (module, require) {        
    console.log( module.paths() ); // no method paths()
    console.log( require.paths() ); // no method paths()
});

仅供参考,这不适用于生产站点。我试图在 QUnit 测试页面中连接一些奇怪的调试/配置代码。我想枚举哪些模块名称定义了自定义路径。这个问题触及了这个问题,但只让我查询已知模块,而不是枚举它们。

4

2 回答 2

20

它是可用的,但它是一个在生产代码中不应该依赖的实现细节(你已经说过它不是为了,而是对其他人的公平警告!)

主上下文的配置可在require.s.contexts._.config. contexts其他配置也将与您关联的任何名称挂起该属性。

于 2014-05-15T20:38:58.557 回答
5

我不相信 require 会在任何地方公开它,至少我无法通过庞大的代码库找到它。不过,有两种方法可以实现这一目标。第一个也是最明显的是将配置定义为全局变量。第二个,更接近你想要的,是创建一个覆盖加载函数的 require 插件,以将配置附加到模块:

define({
    load: function (name, req, onload, config) {
        req([name], function (value) {
            value.requireConfig = config;
            onload(value);
        });
    }
});
于 2013-05-09T18:29:04.280 回答