首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >每个函数的module.exports与module.exports是1?

每个函数的module.exports与module.exports是1?
EN

Stack Overflow用户
提问于 2016-09-11 17:41:37
回答 2查看 140关注 0票数 0

对于模块中的每个函数,包含许多方法的1个module.export和module.export在效率上有区别吗?

代码语言:javascript
复制
module.exports={
func1: function (req, res, next) {},
func2: function (req, res, next) {}
}

代码语言:javascript
复制
module.exports.func1 = function(){};
module.exports.funct2 = function(){};

我被告知要调查这两个选项之间是否存在差异。一种方式比另一种方式好吗?谢谢。

EN

回答 2

Stack Overflow用户

发布于 2016-09-11 19:51:08

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

代码语言:javascript
复制
module.exports = function () { ··· };
票数 0
EN

Stack Overflow用户

发布于 2016-09-11 19:56:44

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

唯一真正的区别是,在第一个示例中,您完全重新分配了module.exports对象,而在第二个示例中,您只是将值分配给键。这在任何正常的用例中都是无关紧要的。

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

代码语言:javascript
复制
exports.func1 = function() {};
exports.func2 = function() {};

第一种形式可用于导出默认值和一些补充值,这实际上是一种相当常见的模式。请考虑以下几点:

代码语言:javascript
复制
function express() {}
function Router() {}

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

这将允许您通过

代码语言:javascript
复制
var express = require('express')
var Router = express.Router

虽然稍微偏离了这个问题的主题,但ES6类比如下所示:

代码语言:javascript
复制
export const func1 = function() {}
export const func2 = function() {}

代码语言:javascript
复制
export {
  func1,
  func2
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39434792

复制
相关文章

相似问题

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