ESModulesの導入によるJavaScriptモジュールシステムの利用法
- 作成日 2025.03.03
- javascript
- javascript

ESModules(ESM)は、JavaScriptにおける標準的なモジュールシステムとして登場し、コードの管理や再利用性を向上させます。本記事では、ESModulesの基本から活用法までを詳細に解説し、効果的なモジュール管理の方法を探ります。
ESModulesとは何か
ESModulesは、JavaScriptの標準モジュールシステムで、import
とexport
を使用してコードをモジュール化します。
モジュールの基礎構文
// モジュールファイル (math.js)
export function add(a, b) {
return a + b;
}
export const PI = 3.14;
// メインファイル (main.js)
import { add, PI } from './math.js';
console.log(add(2, 3)); // 5
console.log(PI); // 3.14
デフォルトエクスポート
モジュールはデフォルトエクスポートを1つ持つことができます。
// モジュールファイル (logger.js)
export default function log(message) {
console.log(message);
}
// メインファイル (main.js)
import log from './logger.js';
log('Hello, ESModules!');
名前付きエクスポート
名前付きエクスポートを使用することで、複数の要素をエクスポートできます。
// モジュールファイル (utils.js)
export function add(a, b) {
return a + b;
}
export function subtract(a, b) {
return a - b;
}
// メインファイル (main.js)
import { add, subtract } from './utils.js';
console.log(add(10, 5)); // 15
console.log(subtract(10, 5)); // 5
モジュールの再エクスポート
再エクスポートを使用して、他のモジュールからエクスポートされた要素を集約できます。
// math.js
export * from './add.js';
export * from './subtract.js';
// main.js
import { add, subtract } from './math.js';
非同期モジュールの読み込み
動的import()
を使用して、モジュールを非同期で読み込むことができます。
import('./math.js').then(module => {
console.log(module.add(2, 3));
});
モジュールのスコープ
ESModulesでは、各モジュールは独自のスコープを持ち、他のモジュールに影響を与えません。
トップレベルのthis
の挙動
モジュール内でthis
はundefined
になります。
// モジュールファイル
console.log(this); // undefined
モジュールの依存関係管理
モジュール間の依存関係を明示的にすることで、コードの可読性とメンテナンス性が向上します。
ブラウザでのESModulesの利用
ブラウザでは、type="module"
を使用してESModulesを利用します。
<script type="module">
import { add } from './math.js';
console.log(add(2, 3));
</script>
Node.jsでのESModulesの利用
Node.jsでは.mjs
拡張子を使用するか、package.json
に"type": "module"
を設定します。
// package.json
{
"type": "module"
}
// main.mjs
import { add } from './math.js';
console.log(add(2, 3));
ESModulesのメリット
- グローバルスコープの汚染を防ぐ
- 依存関係の明確化
- 効率的なコード分割
ESModulesの制限
ESModulesは同期的に評価され、require()
のような動的なモジュール読み込みがサポートされません(動的import()
を除く)。
CommonJSとの違い
CommonJSはNode.jsで広く使用されていますが、ESModulesはブラウザでもサポートされています。これにより、より幅広い環境での利用が可能です。
ESModulesのベストプラクティス
- デフォルトエクスポートと名前付きエクスポートを適切に使い分ける
- モジュールの分割は機能ごとに行う
- 動的
import()
を適切に活用する
まとめ
ESModulesはJavaScriptの標準的なモジュールシステムとして、コードのモジュール化と再利用性を強化します。これを活用することで、規模の大きなプロジェクトでも効率的にコードを管理できます。
-
前の記事
GraphQL Code Generatorで効率的に型安全なReactコードを書く 2025.03.03
-
次の記事
Vue 3のスクリプトセットアップを利用してプロジェクトの初期化を簡素化 2025.03.03
コメントを書く