JS Modules インポート
1. インポート (Import)
モジュールのインポート(import)方法は、エクスポート側が名前付きエクスポート(Named Exports)か、デフォルトエクスポート(Default Exports)かに応じて、大きく2つのパターンに分かれます。
名前付きインポートは、波括弧 { } を使用して記述します。
import { name, age } from "./person.js";対して、デフォルトエクスポートのインポートでは波括弧を使用しません。
import message from "./message.js";2. 名前付きインポート (Named Imports)
名前付きインポート(Named Imports)は、モジュール内の名前付きエクスポートに対応するものです。これにより、モジュールから1つ以上の明示的に命名されたバリアブル(変数)やファンクション(関数)を個別にインポートできます。
名前付きインポートでは、必ず波括弧 { } で囲み、エクスポート名と正確に一致させる必要があります。
2.1 実装例
person.js ファイルから名前付きエクスポートである name と age をインポートする例:
import { name, age } from "./person.js";math.js ファイルから名前付きエクスポートである add、subtract、および PI をインポートする例:
import { add, subtract, PI } from './math.js';2.2 名前付きインポートのルール
- 名前の一致: インポートする名前は、エクスポートされた際の名前と一致しなければなりません。
import { addd } from './math.js'; // ❌ エラー(名前の不一致)- 複数アイテムのインポート: 一度の宣言で複数のアイテムをインポート可能です。
import { add, PI } from './math.js';- リネーム:
asキーワードを使用することで、任意の名称に変更してインポートできます。
import { add as addition } from './math.js';3. デフォルトインポート (Default Import)
デフォルトインポート(Default Import)は、モジュールからメインとなるエクスポート値(export default でエクスポートされたもの)を取り込むための手法です。これは、デフォルトエクスポートと対になる機能です。
デフォルトインポートの場合、波括弧を使用せずに、インポート側で任意の名前を付けることができます。
3.1 実装例
message.js ファイルからデフォルトエクスポートをインポートする例:
// 'text' という任意の名前でインポート
import text from "./message.js";
// 'message' という名前でインポート
import message from "./message.js";3.2 デフォルトインポートのルール
- 単一エクスポート: 1つのデフォルトエクスポートをインポートします。
import message from "./message.js";- 命名の自由度: 特定の名前は強制されません。リネーム(別名の付与)は自由に行えます。
import text from "./message.js";4. デフォルト + 名前付きの同時インポート
1つのモジュール内で、メインとなるファンクションといくつかのヘルパー・ファンクションが混在して提供されている場合、これらを同時にインポートできます。
モジュールファイル (parser.js):
export default function parse() { ... }
export function validate() { ... }
export function format() { ... }モジュールスクリプト:
import parse, { validate, format } from './parser.js';5. すべてを一括でインポートする
* シンボル(ワイルドカード)を使用すると、モジュール内のすべての名前付きエクスポートを単一のオブジェクトとしてインポートできます。
5.1 実装例
person.js からすべての名前付きエクスポートをインポートする場合:
// すべての名前付きエクスポートを 'person' オブジェクトとしてインポート
import * as person from "./person.js";math.js からすべての名前付きエクスポートをインポートする場合:
// すべての名前付きエクスポートを 'math' オブジェクトとしてインポート
import * as math from "./math.js";6. デフォルトインポート vs 名前付きインポート
| 特徴 | デフォルトインポート (Default Import) | 名前付きインポート (Named Import) |
|---|---|---|
| 典型的なユースケース | 1モジュールにつき1つの主要機能 | 1モジュールに複数の機能が存在する場合 |
| エクスポート名との一致 | 不要(自由に選択可能) | 必要(完全に一致させる) |
| 自由なリネーム | 常に可能 | as キーワードを使用時のみ可能 |
| エクスポート可能な数 | 1つのモジュールにつき1つまで | 複数のエクスポートが可能 |