昨晚刚开始使用带有requirejs的节点。
我想根据配置参数替换模块(例如,从命令行传入)。
目前,moduleA
需要moduleB
。如何覆盖moduleB
或替换moduleC
呢?
修改
我使用RequireJS。
我真的想要第三方模块,比如moduleMaster
来指定更新。目标是允许多种可能的行为(即多个数据库访问对象,每个模块1个),然后允许主模块选择其他模块使用哪个。类似的东西:
// module A
define(['B'], function(B) {
console.log(B.msg);
});
// module B
define({
msg: "I am B"
});
// module C
define({
msg: "I am C"
});
// module D
define([], function() {
// TODO: overwrite moduleA so that it uses moduleC instead
});
答案 0 :(得分:1)
没有覆盖模块的事情。您可以做的是让RequireJS根据配置选项更改其加载的内容。例如,
var requirejs = require('requirejs');
var define = requirejs.define;
define('A', ['Adep'], function(Adep) {
console.log(Adep.msg);
});
define('B', {
msg: "I am B"
});
define('C', {
msg: "I am C"
});
var make_A_depend_on = 'C';
requirejs.config({
map: {
'*': {
'Adep': make_A_depend_on
}
}
});
requirejs(['A']);
如果您更改make_A_depend_on
以使其值为"B"
,则A
将加载B
而不是C
。设置配置,以便在需要名为Adep
的madule时,RequireJS实际加载make_A_depend_on
中指定的内容。