# 前端# 名词辨析

[转载] CJS/AMD/UMD/ESM 的意思是什么?

JavaScript 中的 CJS、AMD、UMD 和 ESM 到底是什么?

  • CJS 是 CommonJS 的缩写。它的样子如下:
  • AMD 代表异步模块定义(Asynchronous Module Definition)。以下是示例代码:
  • UMD 代表通用模块定义(Universal Module Definition)。它可能看起来像这样(来源):
  • ESM 代表 ES 模块(ES Modules)。它是 JavaScript 提出的实现标准模块系统的方案。我相信很多人都见过这个:

总结

  • ESM 是最好的模块格式,因为它语法简单、异步特性和可树摇(tree-shakeable)的优势。
  • UMD 可以在任何地方工作,通常作为 ESM 不起作用时的后备选择。
  • CJS 是同步的,适合后端使用。
  • AMD 是异步的,适合前端使用。

Reference