共计 488 个字符,预计需要花费 2 分钟才能阅读完成。
CommonJS 和 ESM (ES6 模块) 都是 JavaScript 模块规范,然而它们有一些区别,次要包含以下几个方面:
- 语法差别:CommonJS 应用 require 语法引入模块,而 ESM 应用 import 语法引入模块。
- 加载形式:CommonJS 应用同步加载形式,即遇到 require 就执行代码,并期待后果返回后再继续执行;而 ESM 应用异步加载形式,它是通过 Promise 的形式异步加载模块,遇到 import 不会阻止程序继续执行。
- 动静导入:ESM 反对动静导入,在运行时依据须要加载模块,而这在 CommonJS 中是不可行的。
- 提早执行:ESM 在导入模块时会主动进行 tree-shaking,只会导入以后模块须要的局部,而 CommonJS 则会导入整个模块。这意味着,在 ESM 中能够在编译时进行优化(如 DCE),然而在 CommonJS 中只能在运行时进行优化。
综上所述,CommonJS 和 ESM 尽管都是 JavaScript 模块规范,然而应用形式和成果都有一些区别,咱们依据具体的状况抉择适合的模块规范。在 Node.js 环境下,目前还是次要应用 CommonJS 模块,而在浏览器中能够应用 ESM 模块。
正文完