JS--CommonJS和ESModule的区别

131 阅读1分钟
  1. CommonJS 发生在代码的运行阶段,通过 require 引入,这时候它会执行并返回一个对象,这个对象用 module.exports 或 exports 导出,若模块在导出对象后发生变化,不影响之前导出的对象。

  2. ESModule 发生在代码的编译阶段,通过 import 引入,引入的是指定的代码块。模块通过 export 暴露出要输出的代码块,并在 import 处执行这个要输出的代码。模块内部的原始代码发生变化会影响 import 引入的代码。

  3. ESModule 的优点:

  • 未用到的代码在打包时可以被排除,减少打包后的体积。

  • ESModule 是静态结构,可对模块变量进行类型检查。

  • CommonJS 导出的是对象,ESModule 可导出变量,减少了引用层级。