312 文字
2 分
importとrequireにおけるデフォルトエクスポートの違い

デフォルトエクスポートは、モジュールから1つだけ値をエクスポートする仕組みです。importとrequireでは、デフォルトエクスポートの扱い方に違いがあります。

importの場合#

importでは、デフォルトエクスポートされた値は、モジュール名の省略記号で直接参照できます。

// モジュールA.js
export default function add(x, y) {
return x + y;
}
// モジュールB.js
import add from "./A";
const result = add(1, 2);
console.log(result); // 3

上記のコード例では、モジュールAからデフォルトエクスポートされた add 関数は、モジュールBで add という名前で直接参照できます。

requireの場合#

requireでは、デフォルトエクスポートされた値は、exports オブジェクトのプロパティとして参照できます。

// モジュールA.js
exports.add = function(x, y) {
return x + y;
};
// モジュールB.js
const A = require("./A");
const result = A.add(1, 2);
console.log(result); // 3

上記のコード例では、モジュールAからデフォルトエクスポートされた add 関数は、モジュールBで A.add という名前で参照できます。

まとめ#

importとrequireにおけるデフォルトエクスポートの主な違いは以下の通りです。

項目importrequire
参照方法モジュール名の省略記号exports オブジェクトのプロパティ
構文シンプルやや冗長

デフォルトエクスポートを使用する際の注意点#

  • デフォルトエクスポートはモジュールごとに1つしか使用できない
  • 名前付きエクスポートと混在して使用できる

関連記事#

import と require の違い