首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NodeJS module.exports子模

NodeJS module.exports子模
EN

Stack Overflow用户
提问于 2014-03-02 00:00:26
回答 2查看 3.1K关注 0票数 2

请注意,尝试包含其他.js文件,以便能够以下列方式从模块导出。这将使主模块更具可读性。我正在尝试包括来自其他函数的代码。

我想这不是正确的方法。有人能引导我朝正确的方向前进吗?

主模块文件:

代码语言:javascript
复制
module.exports = {
    eval(fs.readFileSync('./extras/foo.js')+'');

    fdsa: function (barf, callback) {
    },
    asdf: function (barf, callback) {
    },
}

foo.js:

代码语言:javascript
复制
foo: function (barf, callback) {
     ...
     callback(err, result);
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-02 00:07:50

如果您希望main.js基本上复制并增强foo所拥有的一切(这很愚蠢,但这似乎正是您所要求的),那么您可以这样做:

main.js

代码语言:javascript
复制
var foo = require('./extras/foo');
for (var prop in foo) {
  exports[prop] = foo[prop];
}
exports.fdsa = function(...
exports.asdf = function(...

./extras/foo.js

代码语言:javascript
复制
exports.foo = function(...

附带注意,如果您在somedir/index.js中放置了一个文件,它可能只需要somedir,这也可能是有用的。

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

main.js

代码语言:javascript
复制
exports.foo = require('./extras/foo');

那么调用代码就可以做到:

代码语言:javascript
复制
require('./main').foo.foo(blah, callback);

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

代码语言:javascript
复制
module.exports = function foo(barf, callback) {...
票数 7
EN

Stack Overflow用户

发布于 2021-06-20 10:29:41

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

代码语言:javascript
复制
export function foo(barf, callback) {
     ...
     callback(err, result);
}

在main.js中,你会发现,

代码语言:javascript
复制
export * from './foo.js';
export function fdsa(barf, callback) {
...
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22122089

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档