我在文档中注意到有pass custom configuration into a module的方法:
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测试页面中连接一些奇怪的调试/配置代码。我想枚举哪些模块名称定义了自定义路径。 This question触及了这个问题,但只让我查询已知的模块,而不是枚举它们。
答案 0 :(得分:20)
它是可用的,但它是一个不应该依赖于生产代码的实现细节(您已经说过它不适用于,但是对其他人的公平警告!)
主要上下文的配置位于require.s.contexts._.config
。其他配置也将挂起contexts
属性,其中包含与之关联的任何名称。
答案 1 :(得分:5)
我不相信要求暴露在任何地方,至少我无法通过巨大的代码库找到它。有两种方法可以实现这一点。第一个也是最明显的是将配置定义为全局变量。第二个,也就是你想要的更接近的是创建一个require插件来覆盖load函数以将配置附加到模块:
define({
load: function (name, req, onload, config) {
req([name], function (value) {
value.requireConfig = config;
onload(value);
});
}
});