.js、.mjs和.cjs的区别

526 阅读1分钟

.js、.mjs和.cjs的区别

.js是默认语法,.mjs是ES Module规范的模块化语法,.cjs是CommonJS规范的模块化语法。

.cjs和.mjs的区别

  • CommonJS规范是Node.js的模块化规范,ES Module规范是ES6的模块化规范。
  • CommonJS规范的模块化语法require()是同步的,ES Module规范的模块化语法import()是异步的。
  • CommonJS规范的模块化语法是运行时加载,ES Module规范的模块化语法是编译时加载。

不同文件的使用方式

  1. .js文件
    .js文件是默认语法,是Node.js的模块化规范。

  2. .mjs文件
    .mjs文件是ES Module规范的模块化语法。
    HTML文件使用.mjs的时候,通过<script type="module">来引入。 在nodejs环境使用.mjs的时候,需要在package.json文件中显性地指明。 "type": "module"

  3. .cjs文件
    .cjs文件是CommonJS规范的模块化语法。
    HTML文件使用.mjs的时候,通过<script type="text/javascript">来引入。 在nodejs环境下默认是使用.cjs文件,所有不需要在package.json文件中显性指明。