一覧へ

import/export — モジュールシステムの核心

JavaScript ES Moduleのimport/export構文、defaultとnamedの違い、そしてモジュールを分割する基準を説明します。

入門
|
5
|
検証済み (2026-07)
進捗0/55 (0%)

import/export — モジュールシステムの核心

このトピックを終えると

ESモジュールのimport/export構文を理解し、コードを適切に分割する方法を習得します。


すべてのコードを1つのファイルに書く場合

初期のJavaScriptは、すべてのコードを1つのファイルに格納していました。ファイルが大きくなると、変数名が衝突し、コードの検索が困難になり、再利用もできなくなります。

モジュールは、コードをファイル単位で分割し、必要なものだけをエクスポートしてインポートするシステムです。


export: エクスポート

ファイルから他の場所で使用できるようにエクスポートする方法は2つあります。

Named export — 名前を指定してエクスポートします。

javascript
// utils.js
export function formatDate(date) {
  return date.toLocaleDateString();
}

export const MAX_ITEMS = 100;

1つのファイルから複数のものをエクスポートできます。

Default export — ファイルごとに1つのデフォルトエクスポート:

javascript
// Button.js
export default function Button({ label }) {
  return <button>{label}</button>;
}

import: インポート

Named exportは中括弧でインポートします:

javascript
import { formatDate, MAX_ITEMS } from "./utils.js";

名前が完全に一致する必要があります。名前を変更したい場合は、asを使用します:

javascript
import { formatDate as format } from "./utils.js";

Default exportは中括弧なしでインポートします:

javascript
import Button from "./Button.js";

自由に名前を付けることができます:

javascript
import MyButton from "./Button.js"; // 同じ

Named vs Default

javascript
// Named — 複数エクスポート、名前固定
export function add(a, b) { return a + b; }
export function sub(a, b) { return a - b; }

import { add, sub } from "./math.js";

// Default — 1つエクスポート、名前自由
export default function Calculator() { ... }

import Calculator from "./Calculator.js";
import Calc from "./Calculator.js"; // 名前自由

実務における慣例:

  • Reactコンポーネント: default export (ファイルごとに1つのコンポーネント)
  • ユーティリティ関数、定数: named export (1つのファイルに複数)

両方を一緒に使うこともできます:

javascript
import React, { useState, useEffect } from "react";

Reactはdefault、useStateuseEffectはnamedです。


すべてをインポート

ファイルのすべてのnamed exportを一度にインポートできます:

javascript
import * as utils from "./utils.js";

utils.formatDate(new Date());
utils.MAX_ITEMS;

ただし、必要なものだけをインポートすることをお勧めします。バンドラーが使用されていないコードを削除 (tree-shaking) できるためです。


核心

exportでエクスポートし、importでインポートします。 Named exportは中括弧、default exportは中括弧なしでインポートします。 コンポーネントはdefault、ユーティリティ/定数はnamed exportが一般的です。

💬 質問・コメント

0件のコメント

ログインせずに投稿できます。ゲスト投稿は投稿者自身で編集・削除できません。

0/2000

読み込み中...