.js文件和 .mjs 文件之间有什么区别?

2022-08-30 00:54:10

我已经开始处理一个基于Node.js的现有项目。我只是试图理解执行流程,在那里我遇到了一些文件。我在网上搜索了一下,发现这些是基于模块的JS文件。*.mjs

我想知道它与文件有何不同(它如何受益)?*.js


答案 1

它指示 ES6 模块文件。


Node.js的原始模块系统是CommonJs(它使用和)。requiremodule.exports

自从 Node.js 创建以来,ECMAScript 模块系统(使用 和 )已成为标准,Node.js 增加了对它的支持。importexport

Node.js将文件视为 CommonJS 模块,将文件视为 ECMAScript 模块。它将文件视为项目的默认模块系统(除非 package.json 说 ),否则它是 CommonJS。.cjs.mjs.js"type": "module",

参见:ES6模块系统和CommonJs之间的差异


答案 2

.MJS 文件

  • mjs an extension for EcmaScript modules
  • MJS 文件是包含 ES 模块(ECMAScript 模块)的源代码文件,用于 Node.js 应用程序。
  • MJS文件是用JavaScript编写的,也可以在Node.js上下文之外使用.JS扩展名。

  • ES模块允许Web和应用程序开发人员将代码组织成更小的可重用组件。

ECMAScript 6 (ES6) 引入了 ES 模块的规范,为在 JavaScript 中实现模块提供了一个标准。截至2018年,所有主要的Web浏览器都支持ES模块。

然而,模块化JavaScript的普及早于ES6。Node.js是一个JavaScript运行时环境,它使用CommonJS作为模块的规范。由于许多现有应用程序都是使用CommonJS构建的,因此当Node.js添加了对本机ES模块的支持时,它提出了有争议的MJS文件扩展名来区分两者并防止应用程序中断。

注意:一些开发人员非正式地将MJS文件称为“迈克尔杰克逊脚本”文件。