每个函数有1个module.exports与module.exports?

时间:2016-09-11 09:41:37

标签: node.js

在包含许多方法的1个module.export和模块中每个函数的module.export之间是否有不同的效率?

module.exports={
func1: function (req, res, next) {},
func2: function (req, res, next) {}
}

VS。

module.exports.func1 = function(){};
module.exports.funct2 = function(){};

我被告知调查两个选项之间是否存在差异。 比其他方式更好吗? 感谢。

2 个答案:

答案 0 :(得分:0)

除了第一个将导出多个函数而第二个将逐个导出之外,上述两个之间没有区别。当你需要在另一个模块中时,它们都返回相同的对象。还有另一种导出模块的方法,称为单值导出,与您提到的不同。

module.exports = function () { ··· };

答案 1 :(得分:0)

实际上,没有区别。在CommonJS中,module.exports只是另一个对象。这两个示例都导出与该对象上的键相同的函数。

唯一真正的区别在于,第一个示例完全重新分配module.exports对象,而在第二个示例中,您只是为键分配值。在任何理智的用例中,这根本不重要。

在Node中,第二个示例可以缩写为

exports.func1 = function() {};
exports.func2 = function() {};

第一个表单可用于导出默认值和一些互补值,这实际上是一种相当常见的模式。请考虑以下事项:

function express() {}
function Router() {}

module.exports = express
module.exports.Router = Router

这将允许您通过

导入快递
var express = require('express')
var Router = express.Router

虽然这个问题稍微偏离主题,但ES6类似物看起来像这样:

export const func1 = function() {}
export const func2 = function() {}

export {
  func1,
  func2
}