在 JavaScript 的發展歷程中,模組系統是非常重要的一環。
它們在設計理念、使用方式、支援環境上都有明顯的差異。
這樣做可以讓同一個套件同時提供 CJS 與 ESM 的版本,方便不同環境使用。
在 npm 套件中,可以透過 package.json 定義模組的入口點:
main
:指定 CommonJS 的入口文件,通常是 require 時會讀取的檔案。module
:指定 ESM 的入口文件,供 webpack、rollup、vite 等工具使用。模組系統的一個重要差別,就是是否預設使用 嚴格模式 (strict mode)。
設計於** ECMAScript 5** 之前,默認非嚴格模式。
特性:
由 ECMAScript 標準引入,默認嚴格模式。
嚴格模式下:
<script type="module">
引入。npm 上大部分套件最初都是以 CJS 發布。
import
或 require
語法。