民间, 尝试包含其他.js文件,以便能够以下列方式从模块导出。这将使主模块更具可读性。我试图包含其他函数的代码。
我认为这不是正确的方法。有人可以指导我朝正确的方向发展吗?
主模块文件:
module.exports = {
eval(fs.readFileSync('./extras/foo.js')+'');
fdsa: function (barf, callback) {
},
asdf: function (barf, callback) {
},
}
foo.js:
foo: function (barf, callback) {
...
callback(err, result);
}
答案 0 :(得分:5)
如果你想要 main.js 基本上复制和增强foo所拥有的一切(这很愚蠢,但这似乎就是你所要求的),你可以这样做:
<强> main.js 强>
var foo = require('./extras/foo');
for (var prop in foo) {
exports[prop] = foo[prop];
}
exports.fdsa = function(...
exports.asdf = function(...
<强> ./额外/ foo.js 强>
exports.foo = function(...
旁注如果您将文件放在somedir/index.js
中,则可能只需要somedir
,这也很有用。
如果您只想通过main访问foo
并且可以使用子命名空间,只需执行以下操作:
<强> main.js 强>
exports.foo = require('./extras/foo');
然后您的调用代码可以执行:
require('./main').foo.foo(blah, callback);
另请注意,如果您希望整个foo
模块成为一个函数,请执行以下操作:
module.exports = function foo(barf, callback) {...
答案 1 :(得分:0)
使用 es6 模块模式有一种非常简单的方法可以实现这一点。 所以在 foo.js
export function foo(barf, callback) {
...
callback(err, result);
}
在 main.js 中,你会得到类似的东西,
export * from './foo.js';
export function fdsa(barf, callback) {
...
}