我们可以在NodeJS中重用导出的函数吗?

时间:2017-08-03 10:50:49

标签: node.js commonjs

我在.js文件中有这个:

exports.generate = function(details) {
    // bunch of code
    // returns Promise
}

exports.save = function(details){
    exports.generate(details)
     .then(function(id){
      //save in db
      })
}

可以使用像这样的导出函数吗?还是有更好的方法......?

2 个答案:

答案 0 :(得分:2)

这取决于您是否希望模块的使用者能够通过覆盖exports.generate(例如require('foo').generate = function() {...})来影响模块的行为。

如果您不希望用户能够以这种方式影响它,那么您最好的选择是取出generate()函数并命名它,然后导出并使用该函数直接在save()内的名称:

function generate(details) {
  // ...
}

exports.generate = generate;
exports.save = function(details) {
  generate(details).then(function(id) {
    // ...
  });
};

否则,如果你想要允许用户覆盖generate()功能,那么你目前正在做的事情很好。

答案 1 :(得分:0)

var _this=this;
exports.save = function(details) {
  _this.generate(details) ...
};