我想将这些模块导入到我的项目中:
var ModuleA = require('./ModuleA.js'),
ModuleB = require('./ModuleB.js'),
ModuleC = require('./ModuleC.js'),
ModuleD = require('./ModuleD.js');
现在,这很好用,但我想捆绑这些,而是调用一个处理所有这些'sub'modules 的模块,如下所示:
// app.js ----------------------------
var Module = require('./Module.js');
// Module.js -------------------------
var ModuleA = require('./ModuleA.js'),
ModuleB = require('./ModuleB.js'),
ModuleC = require('./ModuleC.js'),
ModuleD = require('./ModuleD.js');
// ModuleA.js ------------------------
exports.method = function() { return true }
现在,我希望能够访问'sub'bundles'出口,如下:
ModuleA.method();
这可能吗?
答案 0 :(得分:4)
试试这个:
// ModuleA.js
module.exports.method = function () { return true; }
// Module.js
module.exports.A = require('./ModuleA');
module.exports.B = require('./ModuleB');
// app.js
var myModule = require('./Module');
myModule.A.method();
如果您希望直接在ModuleA
上调用myModule
的方法,则需要在Modules.js
文件中重新导出它们,如下所示:
// ModuleA.js
module.exports.method = function () { return true; }
// Module.js
module.exports.methodA = require('./ModuleA').method;
module.exports.methodB = require('./ModuleB').method;
// app.js
var myModule = require('./Module');
myModule.methodA();
这会解决您的问题吗?
或者,您可以使用node-require-all允许您一次导入多个文件并使用单个对象导出它们。一个例子可能是:
var modules = require('require-all')({
dirname : __dirname + '/modules',
filter : /(Module.+)\.js$/,
excludeDirs: /^\.(git|svn)$/
});
之后,您有一个对象modules
,其中包含单个模块作为属性:
modules.ModuleA.method();
(我没有测试过这段代码,但基本上它应该像这样工作。)
答案 1 :(得分:0)
在Module.js中,执行以下操作:
var ModuleA = require('./ModuleA.js'),
for (var exported in ModuleA) {
exports[exported] = ModuleA[exported];
}
ModuleA导出的所有对象(函数等)现在也由Module导出。