CommonJSとは?
CommonJS(CJS)はJavaScriptのモジュールシステムの一つで、主にNode.js で使われています。
もともとはブラウザ外(サーバーサイド)で JavaScript を動作させるために設計されました。
- require() を使ってモジュールを読み込む
- module.exportsでモジュールをエクスポート
- 同期的に読み込む
- Node.js でデフォルトで使用されている
- ブラウザではそのまま使えない(Webpack や Browserify などのツールが必要)
ES Module (ESM)とは?
ES Module(ESM)はECMAScript 2015(ES6)で導入された標準のモジュールシステムです。
CommonJS(CJS)の require()/module.exportsに代わり、ESMではimport/exportを使用します。
- import / export を使用
- 非同期的(async)にモジュールを読み込む
- ブラウザと Node.js の両方で利用可能
Node.jsで使う場合には.mjs
拡張子が必要、またはpackage.json
に"type": "module"
を設定必要
使い分け方
新しいプロジェクトではES Moduleを利用すると良いでしょう。
ただしNode.jsが使われている既存プロジェクトではCommonJSの方が一般的です。