繁体   English   中英

NodeJS module.exports 子模块

[英]NodeJS module.exports submodule

伙计们,尝试包含其他 .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);
}

如果您希望main.js基本上复制和增强 foo 的所有内容(这很愚蠢,但这似乎是您要的),您可以这样做:

主文件

var foo = require('./extras/foo');
for (var prop in foo) {
  exports[prop] = foo[prop];
}
exports.fdsa = function(...
exports.asdf = function(...

./extras/foo.js

exports.foo = function(...

旁注如果你把一个文件放在somedir/index.js ,它可能只是somedir ,这也很有用。

如果您只想通过 main 访问foo并且可以使用子命名空间,请执行以下操作:

主文件

exports.foo = require('./extras/foo');

然后您的调用代码可以执行以下操作:

require('./main').foo.foo(blah, callback);

另请注意,如果您希望整个foo模块成为一个函数,只需执行以下操作:

module.exports = function foo(barf, callback) {...

使用 es6 模块模式有一种非常简单的方法可以实现这一点。 所以在 foo.js 中

export function foo(barf, callback) {
     ...
     callback(err, result);
}

在 main.js 中,你会有类似的东西,

export * from './foo.js';
export function fdsa(barf, callback) {
...
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM