我遇到一个问题,我正在使用一个文件来保存模块列表,并在我的nodejs服务器中的一次调用中要求此列表。我想以特定的方式使用列表中的模块。
modules.js -
Mods = {
mymodule: require('./mymodule.js')
}
exports.f = function() {
return Mods;
}
index.js -
f = require('./modules.js').f;
f().mymodule.echo("Hello World");
所以我现在想要将我正在调用的模块名称直接放入函数中,而不是如何使用f(),所以我可以这样做:
f = require('./modules.js').f;
f('mymodule').echo("Hello World");
我尝试了很多不同的实验,但无法让它工作,是否可以在javascript中执行此操作?
答案 0 :(得分:1)
好吧,如果你这样做:
var Mods = {
mymodule: require('./mymodule.js');
}
module.exports = function( name ) {
return Mods[name];
};
然后你可以这样做:
var f = require( "./modules.js"); //no .f required
f( "mymodule" ).echo( "Hello world");
答案 1 :(得分:1)
编辑:我被要求解释我的答案,我很高兴这样做。解决方案的关键是所谓的括号表示法。该术语指的是使用变量访问JavaScript中对象的属性的能力。在下面的代码中,您可以看到如何使用Mods
访问对象[name]
的属性,其中name
是一个包含属性名称作为字符串的变量。
Mods = {
mymodule: require('./mymodule.js');
}
exports.f = function(name) {
return Mods[name];
}
答案 2 :(得分:1)
我会说更多...... ^^
var Mods = {
mymodule: require('./mymodule.js');
}
module.exports = function( name ) {
if( !name ) return Mods;
return Mods[name];
};