【JavaScript】「名前付きエクスポート/インポート」と「デフォルトエクスポート/インポート」

はじめに

JavaScriptのエクスポートは、モジュールを使用してコードを分割し、再利用可能にするための重要な概念です。エクスポートを利用することで、他のファイルから関数や変数、クラスをインポートして使用することができます。

JavaScriptには、主に「名前付きエクスポート/インポート」と「デフォルトエクスポート/インポート」の2種類の方法があります。それぞれについて詳しく説明します。

名前付きエクスポート/インポート

エクスポート方法

名前付きエクスポートを使用すると、1つのモジュールから複数のエクスポートを行うことができます。エクスポートするアイテムに名前を付け、その名前でインポートします。

math.js

export const pi = 3.14159;

export function add(a, b) {
  return a + b;
}

export class Calculator {
  multiply(a, b) {
    return a * b;
  }
}

上記の例では、piadd関数、Calculatorクラスがエクスポートされています。

インポート方法

名前付きエクスポートをインポートする際には、波括弧{}を使ってインポートするアイテムを指定します。

main.js

import { pi, add, Calculator } from './math.js';

console.log(pi); // 3.14159
console.log(add(2, 3)); // 5

const calculator = new Calculator();
console.log(calculator.multiply(4, 5)); // 20

名前の変更(エイリアス)

名前付きエクスポートをインポートする際には、asキーワードを使って名前を変更することもできます。

main.js

import { pi as circleConstant, add as sum } from './math.js';

console.log(circleConstant); // 3.14159
console.log(sum(2, 3)); // 5

デフォルトエクスポート/インポート

デフォルトエクスポートを使用すると、1つのモジュールにつき1つのデフォルトエクスポートを指定することができます。デフォルトエクスポートは、インポートする際に特定の名前を指定する必要がありません。

エクスポート方法

user.js

const user = {
  name: "Alice",
  age: 25,
};

export default user;

上記の例では、userオブジェクトがデフォルトエクスポートされています。

インポート方法

デフォルトエクスポートをインポートする際には、任意の名前を指定してインポートできます。

main.js

import user from './user.js';

console.log(user.name); // Alice
console.log(user.age); // 25

名前付きエクスポート/インポートとデフォルトエクスポート/インポートの併用

1つのモジュールで名前付きエクスポートとデフォルトエクスポートを併用することもできます。

エクスポート方法

utils.js

export const greet = (name) => `Hello, ${name}!`;

const farewell = (name) => `Goodbye, ${name}!`;
export default farewell;

インポート方法

main.js

import farewell, { greet } from './utils.js';

console.log(greet('Alice')); // Hello, Alice!
console.log(farewell('Alice')); // Goodbye, Alice!

まとめ

  • 名前付きエクスポートは、複数の関数や変数、クラスをエクスポートするのに便利です。
  • デフォルトエクスポートは、モジュールにつき1つのエクスポートをデフォルトとして指定します。
  • 名前付きエクスポートとデフォルトエクスポートを併用することで、柔軟にモジュールを設計できます。

このように2種類のエクスポートを活用することで、JavaScriptのコードをモジュール化し、再利用性を高めることができます。これによって、大規模なプロジェクトでも管理しやすくなります。

関連記事

【JavaScript】スプレッド構文
# はじめに スプレッド構文は、JavaScriptでデータを展開する際に非常に便利な機能です。JavaScriptにおけるスプレッド構文の基本的な使い方とその応用について説明します。 # スプレッド構文の基本 スプレッド構文は、配列やオ [...]
2024年8月7日 10:57
【JavaScript】||(論理和演算子)と??(Nullish Coalescing演算子)の違い
# はじめに JavaScriptでの`||`(論理和演算子)と`??`(Nullish Coalescing演算子)は、どちらも値を選択する際に使われる演算子ですが、それぞれの動作には重要な違いがあります。 # ||(論理和演算子) ` [...]
2024年8月1日 10:58
【JavaScript】3種類の変数宣言
# はじめに JavaScriptには、`var`,`let`,`const`という3種類の変数宣言方法があります。これらは、それぞれ異なる特性と用途を持っています。以下に、それぞれの違いを説明します。 # var ## スコープ [...]
2024年7月30日 12:48
【JavaScript】4種類の関数とそれぞれの特性・使い所
# はじめに JavaScriptの関数は、コードの再利用やモジュール化を実現するための基本的な要素です。関数は、プログラムの複雑さを管理しやすくし、コードの可読性と保守性を向上させます。 JavaScriptには、いくつかの異なる方法で関 [...]
2024年7月30日 12:19
【CSS+JS】メニューアイコンの一種、ベントーメニューの実装方法(アニメーション付き)
# はじめに メニューアイコンの中ではハンバーガーメニューが有名だと思いますが、その他にもいろいろな種類があって、それぞれに名前もつけられています。 <a class="gallery" data-group="gallery" href= [...]
2021年10月18日 14:26
【CSS+JS】メインコンテンツの裏から現れるフッターの実装方法
# はじめに オシャレなサイトなどでたまに見かける「メインコンテンツの裏から現れるフッター」の実装方法について説明します。 # サンプル <iframe height="392" style="width: 100%;" scrollin [...]
2021年10月18日 13:26
【CSS+JS】背景画像の視差効果(パララックス)を実装する方法
# はじめに JavaScriptプラグインを使わずに、背景画像の視差効果(パララックス)をVanilla JS(ピュアなJavaScript)だけで実装する方法について説明します。 # サンプル まず、背景画像の視差効果(パララックス) [...]
2021年10月17日 12:08
【CSS+JS】現在のスクロール量を確実に取得する(プロパティ対応状況まとめ)
# はじめに JavaScriptで現在のスクロール量を取得するためのプロパティはたくさんあります。種類がありすぎるため、かえってどれを使えばいいのかいまいちわからないという人も多いかと思います。 本記事では、各プロパティのブラウザ対応状況 [...]
2021年6月5日 15:51