Node.jsにおける「ESモジュール(ECMAScript Modules)」は、JavaScriptの標準的なモジュールシステムであり、ブラウザとNode.jsの両方で利用可能です。以下にESモジュールの仕組みとNode.jsでの使用方法について詳しく説明します。
1. ESモジュールの基本構文
エクスポート(export)
export)ESモジュールでは、関数や変数、クラスなどを他のファイルから利用可能にするために export を使います。
1つのデフォルトエクスポートも可能です:
インポート(import)
import)モジュールでエクスポートされたものを使うためには import を使います。
2. Node.jsにおけるESモジュールの使用方法
Node.jsでは、従来のCommonJS(require, module.exports)に加えて、ESモジュールも公式にサポートされています。ただし、いくつかの条件があります。
2.1 .mjs拡張子を使う
.mjs拡張子を使うファイル名を .mjs にすると、Node.jsはそのファイルをESモジュールとして扱います。
2.2 package.jsonで type: "module" を指定する
package.jsonで type: "module" を指定するプロジェクト全体で.js拡張子を使いつつESモジュールとして扱いたい場合は、package.json に以下の設定を加えます:
この設定により、.jsファイルがESモジュールとして解釈されます。
3. ESモジュールとCommonJSの違い
| 比較項目 | ESモジュール (import/export) |
CommonJS (require/module.exports) |
|---|---|---|
| 読み込み方式 | 静的(事前に解析) | 動的(実行時に読み込む) |
| 非同期対応 | import()関数で可能 |
requireは同期のみ |
| ファイル拡張子 | .mjs または type: "module" |
.js(デフォルト) |
| 対応環境 | ブラウザ・Node.js | Node.js専用 |
4. 注意点
-
import文はファイルの先頭でのみ使用可能です(トップレベル)。 -
CommonJSのモジュールは
importで直接読み込めないことがあります(逆も同様)。 -
ESモジュールでは
__dirnameや__filenameは使えません。代わりに以下のように記述します:
5. まとめ
-
ESモジュールは、JavaScriptの標準的なモジュールシステムであり、モダンなコード開発に推奨されます。
-
Node.jsでは
.mjs拡張子かtype: "module"を使うことで有効化できます。 -
静的構文とトップレベルの
import/exportにより、パフォーマンスやツールによる最適化が可能です。
必要に応じてCommonJSとの互換性も考慮しながら使い分けるとよいでしょう。
ChatGPT4o 生成日:2025/06/25