如何覆盖 requiejs 中的模块?
How do I override modules in requiejs?
昨晚刚开始使用 node 和 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
});
不存在覆盖模块这样的事情。您可以做的是让 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
的模块时,RequireJS 实际上加载在 make_A_depend_on
.
中指定的内容
昨晚刚开始使用 node 和 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
});
不存在覆盖模块这样的事情。您可以做的是让 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
的模块时,RequireJS 实际上加载在 make_A_depend_on
.