312 文字
2 分
importとrequireにおけるデフォルトエクスポートの違い
デフォルトエクスポートは、モジュールから1つだけ値をエクスポートする仕組みです。importとrequireでは、デフォルトエクスポートの扱い方に違いがあります。
importの場合
importでは、デフォルトエクスポートされた値は、モジュール名の省略記号で直接参照できます。
// モジュールA.jsexport default function add(x, y) { return x + y;}
// モジュールB.jsimport add from "./A";
const result = add(1, 2);
console.log(result); // 3
上記のコード例では、モジュールAからデフォルトエクスポートされた add
関数は、モジュールBで add
という名前で直接参照できます。
requireの場合
requireでは、デフォルトエクスポートされた値は、exports
オブジェクトのプロパティとして参照できます。
// モジュールA.jsexports.add = function(x, y) { return x + y;};
// モジュールB.jsconst A = require("./A");
const result = A.add(1, 2);
console.log(result); // 3
上記のコード例では、モジュールAからデフォルトエクスポートされた add
関数は、モジュールBで A.add
という名前で参照できます。
まとめ
importとrequireにおけるデフォルトエクスポートの主な違いは以下の通りです。
項目 | import | require |
---|---|---|
参照方法 | モジュール名の省略記号 | exports オブジェクトのプロパティ |
構文 | シンプル | やや冗長 |
デフォルトエクスポートを使用する際の注意点
- デフォルトエクスポートはモジュールごとに1つしか使用できない
- 名前付きエクスポートと混在して使用できる