.js 和 .mjs 文件有什么区别?
What is the difference between .js and .mjs files?
我已经开始基于 Node.js 开展现有项目。我只是想了解执行流程,我遇到了一些 *.mjs
文件。我在网上搜索过,发现这些是基于模块的 JS 文件。
我想知道它与 *.js
文件有何不同(它有什么好处)?
表示ES6模块文件
Node.js的原始模块系统是CommonJs(使用require
和module.exports
)。
自从 Node.js 创建以来,ECMAScript module system(使用 import
和 export
)已成为标准,并且 Node.js 添加了对它的支持。
Node.js 会将 .cjs
文件视为 CommonJS 模块,将 .mjs
文件视为 ECMAScript 模块。它将 .js
文件视为项目的默认模块系统(这是 CommonJS,除非 package.json 说 "type": "module",
)。
.MJS file
- mjs an extension for EcmaScript modules
- An MJS file is a source code file containing an ES Module (ECMAScript Module) for use with a Node.js application.
MJS files are written in JavaScript, and may also use the .JS extension outside of the Node.js context.
ES Modules allow web and application developers to organize code into smaller reusable components.
ECMAScript 6 (ES6) 引入了 ES 模块规范,为在 JavaScript 中实现模块提供了标准。截至 2018 年,所有主流网络浏览器都支持 ES 模块。
然而,模块化 JavaScript 的流行早于 ES6。 Node.js,JavaScript 运行时环境,使用 CommonJS 作为模块规范。由于现有的许多应用程序都是使用 CommonJS 构建的,因此当 Node.js 添加对原生 ES 模块的支持时,有争议地引入了 MJS 文件扩展名以区分两者并防止应用程序崩溃。
注意:一些开发人员非正式地将 MJS 文件称为 "Michael Jackson Script" 文件。
为清楚起见。至于 devs/humans,很容易区分模块文件(.mjs)和普通 javascript 文件(.js)...文件。
还有一些性能优势让您更有理由考虑使用它。
V8(JavaScript engine that powers Google Chrome) 建议使用 .mjs,但这仍然取决于您的情况。如果您想了解更多它的优势,请查看https://v8.dev/features/modules#mjs
我已经开始基于 Node.js 开展现有项目。我只是想了解执行流程,我遇到了一些 *.mjs
文件。我在网上搜索过,发现这些是基于模块的 JS 文件。
我想知道它与 *.js
文件有何不同(它有什么好处)?
表示ES6模块文件
Node.js的原始模块系统是CommonJs(使用require
和module.exports
)。
自从 Node.js 创建以来,ECMAScript module system(使用 import
和 export
)已成为标准,并且 Node.js 添加了对它的支持。
Node.js 会将 .cjs
文件视为 CommonJS 模块,将 .mjs
文件视为 ECMAScript 模块。它将 .js
文件视为项目的默认模块系统(这是 CommonJS,除非 package.json 说 "type": "module",
)。
.MJS file
- mjs an extension for EcmaScript modules
- An MJS file is a source code file containing an ES Module (ECMAScript Module) for use with a Node.js application.
MJS files are written in JavaScript, and may also use the .JS extension outside of the Node.js context.
ES Modules allow web and application developers to organize code into smaller reusable components.
ECMAScript 6 (ES6) 引入了 ES 模块规范,为在 JavaScript 中实现模块提供了标准。截至 2018 年,所有主流网络浏览器都支持 ES 模块。
然而,模块化 JavaScript 的流行早于 ES6。 Node.js,JavaScript 运行时环境,使用 CommonJS 作为模块规范。由于现有的许多应用程序都是使用 CommonJS 构建的,因此当 Node.js 添加对原生 ES 模块的支持时,有争议地引入了 MJS 文件扩展名以区分两者并防止应用程序崩溃。
注意:一些开发人员非正式地将 MJS 文件称为 "Michael Jackson Script" 文件。
为清楚起见。至于 devs/humans,很容易区分模块文件(.mjs)和普通 javascript 文件(.js)...文件。
还有一些性能优势让您更有理由考虑使用它。 V8(JavaScript engine that powers Google Chrome) 建议使用 .mjs,但这仍然取决于您的情况。如果您想了解更多它的优势,请查看https://v8.dev/features/modules#mjs