我已经开始在一个基于Node.js的现有项目上工作。我只是想了解执行流程,在那里我遇到了一些*。乔丹的文件。我在网上搜索了一下,发现这些都是基于模块的js文件。

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


表示ES6模块文件。


Node.js最初的模块系统是CommonJs(它使用require和module.exports)。

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

Node.js会把.cjs文件当作CommonJS模块,把.mjs文件当作ECMAScript模块。它将把.js文件视为项目的默认模块系统(除非package. js是CommonJS)。Json表示“type”:“module”,)。

参见:ES6模块系统和CommonJs的区别


.MJS文件 mjs是EcmaScript模块的扩展 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文件称为“迈克尔·杰克逊脚本”文件。


为清晰。至于开发者/人类,很容易区分模块文件(.mjs)和正常的javascript文件(.js)…因为即使检查文件中的代码,也不容易确定。

它还有性能上的好处,让您有更多理由考虑使用它。 V8(支持谷歌Chrome的JavaScript引擎)推荐使用.mjs,但这仍然取决于你的情况。如果你想了解更多它的优点,请访问https://v8.dev/features/modules#mjs