Menu
Coddy logo textTech

デフォルトエクスポート vs 名前付きエクスポート

CoddyのJavaScriptジャーニー「オブジェクト指向プログラミング」セクションの一部 — レッスン 10/56。

JavaScriptモジュールでは、コードをエクスポートするための主な方法として、名前付きエクスポート(named exports)とデフォルトエクスポート(default exports)の2つがあります。

名前付きエクスポート(Named Exports)を使用すると、モジュールから複数の値をエクスポートできます。

// math.js
export function add(a, b) {
    return a + b;
}
export function subtract(a, b) {
    return a - b;
}

名前付きエクスポートをインポートする場合、波括弧の中で全く同じ名前を使用する必要があります:

// app.js
import { add, subtract } from './math.js';

console.log(add(5, 3));      // 8
console.log(subtract(10, 4)); // 6

名前付きインポートの名前を変更する必要がある場合は、asキーワードを使用してエイリアスを作成します。

// app.js
import { add as sum, subtract as minus } from './math.js';

console.log(sum(5, 3));   // 8
console.log(minus(10, 4)); // 6

デフォルトエクスポートを使用すると、モジュールから単一のメインの値をエクスポートできます。

// user.js
const user = {
  name: 'John',
  age: 30
};

export default user;

デフォルトエクスポートをインポートする場合、波括弧({})を使わずに任意の名前を使用できます:

// app.js
import person from './user.js';

console.log(person.name); // 'John'

どちらをいつ使うべきか? モジュールが複数の関連するユーティリティ(例:ヘルパー関数のコレクション)を提供する場合、名前付きエクスポート(named exports)を使用します。モジュールに1つの主要な目的またはメインの値(例:クラス、コンポーネント、または設定オブジェクト)がある場合は、デフォルトエクスポート(default export)を使用します。

1つのモジュール内で両方のタイプのエクスポートを組み合わせることができます。

// vehicle.js
export const wheels = 4;
export const doors = 4;

const car = {
  brand: 'Toyota',
  model: 'Corolla'
};

export default car;

そして、これらをまとめてインポートします:

// app.js
import myCar, { wheels, doors } from './vehicle.js';

console.log(myCar.brand);  // 'Toyota'
console.log(wheels);       // 4
challenge icon

チャレンジ

簡単

2つのファイルがあります。あなたのタスクは、calculator.js でエクスポートを設定し、main.js でインポートを設定することです。

  1. calculator.js 内:calculatedefault として、squarenamed としてエクスポートしてください。
  2. main.js 内:両方の関数を正しくインポートしてください。

テストでは以下を確認します:

  • calculate にデフォルトエクスポートが使用されていること
  • square に名前付きエクスポートが使用されていること
  • 両方のインポートが正しく機能していること

自分で試してみよう

// TODO: ここでcalculator.jsから両方の関数をインポートします


// テスト
console.log(calculate(10, 5, '+')); // 15を出力するはずです
console.log(square(4));             // 16を出力するはずです
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

オブジェクト指向プログラミングのすべてのレッスン