当前位置: 首页 > news >正文

【模块化解读】commonjs vs commonjs2 exports vs module.exports

背景

最近在用typescript写工具库的时候,无意中在 webpack中看到了两个关键字,commonjs 和 commonjs2. 瞬间产生了好奇。后面看了issues才得知它们与模块化 导出有着密切关系。

CommonJs spec defines only exports. But module.exports is used by node.js and many other CommonJs implementations.
commonjs mean pure CommonJs
commonjs2 also includes the module.exports stuff.

大致意思是:
CommonJs规范仅定义出口。但是模块。使用出口节点。js和许多其他CommonJs的实现。
commonjs的意思是纯commonjs
commonjs2还包括模块。出口的东西。

这里引用了 https://github.com/webpack/webpack/issues/1114 的回答,commonjs vs commonjs2 这两个概念问题迎刃而解。大家可自行阅览

那到底module.exports vs exports 区别是什么呢?

自己查阅了很多文章,仍然很懵,但觉得这篇文章https://www.sitepoint.com/understanding-module-exports-exports-node-js/ 解释得比较到位。

我所理解的关键点:
1.require的大致实现:

	var require = function(path) { // ... return module.exports; };

2.module.exports => {} <= exports 指向同一个对象。 两者最好不要同时使用。

// exports 仅适用于:exports.a = 'xxx';// module.exports 适用于module.exports = 'xxx';
module.exports.a = 'xxx';

那么问题来了好像export能做的,module.export都能满足。所以产生疑问,知识才有了拓展的可能。

3.其实2中的疑问一点也没错,nodejs 官方文档中提及https://nodejs.org/docs/latest/api/modules.html#modules_exports_alias exports
只是module.exports的一个别名 还提示当你搞不清楚的时候,就用module.exports。

总结

1.commonjs 规范只定义了exports,而 module.exports是nodejs对commonjs的实现,实现往往会在满足规范前提下作些扩展,我们这里把这种实现称为了commonjs2

2.module.exports 是nodejs对commonjs的具体实现。exports 只是它的一个别名。搞不清楚关系的时候可以不用这个别名。

戏言: 不知不觉头发丝儿又少了几根,“呜呜呜呜,码仔痛哭“

http://www.rkmt.cn/news/25928.html

相关文章:

  • PHP 8.5 新特性 闭包可以作为常量表达式了
  • 【JavaScript-基础】map、forEach、for、for in、for of等的区别
  • dotnet 利用 Windows 注册表实现开机自动启动
  • Python 类属性的应用场景
  • 玄机——第五章 Windows 实战-evtx 文件分析
  • 软件工程第二次团队作业——构建一个智能体
  • CityNav:包含地理信息的语言目标空中导航数据集 - MKT
  • Linux权限维持-后门
  • [Tool] [HTTP] curl 命令行工具:基础与进阶用法
  • sourcetree 克隆项目仓库地址,输入账号密码后提示:这是一个无效的源路径/URL
  • 北航高低无人机协同导航方案:高空掌全局+低空查细节 - MKT
  • 20251020 之所思 - 人生如梦
  • 方格图路径计数 dp 的反射路径优化
  • 企业信息化建设的钱都花在哪儿了?
  • 解释这些区块链核⼼概念:区块、交易、Merkle Tree、共识机制(PoW、PoS)、Gas Fee 原理2
  • 一次XFS死锁问题分析
  • P11150 [THUWC 2018] 字胡串
  • 软工第二次编程作业
  • 20232304 2025-2026-1 《网络与系统攻防技术》实验三实验报告
  • 20251020周一日记
  • 英语_阅读_Start school_待读
  • 题解:Luogu P10004 [集训队互测 2023] Permutation Counting 2
  • 扣一个细节问题
  • 软工第三次作业————结对作业
  • 题解:Luogu P6898 [ICPC 2014 WF] Metal Processing Plant
  • 题解:Luogu P9260 [PA 2022] Miny
  • 题解:Luogu P13544 [OOI 2022] Serious Business
  • 题解:Luogu P14254 分割(divide)
  • 构造单
  • CSP-S 35