我已经开始研究基于 Node.js 的现有项目。我只是想了解执行流程,我遇到了一些*.mjs文件。我搜索了网页,发现这些是基于模块的 JS 文件。
*.mjs
我想知道它与*.js文件有什么不同(它有什么好处)?
*.js
它表示一个 ES6 模块文件。
Node.js 的原始模块系统是CommonJs(使用require和module.exports)。
require
module.exports
自创建 Node.js 以来,ECMAScript 模块系统(使用import和export)已成为标准,并且 Node.js 增加了对它的支持。
import
export
Node.js 会将.cjs文件视为 CommonJS 模块,将.mjs文件视为 ECMAScript 模块。它将文件视为项目的默认模块系统(除非 package.json 说.js是 CommonJS )。 __"type": "module",
.cjs
.mjs
.js
"type": "module",
参见:ES6 模块系统和 CommonJs 的区别