ESMの基礎 — import/export、defaultとnamed
ESMのimport/exportの基礎を学びます。モジュールとは何か、namedとdefaultのエクスポート、名前空間インポート、CommonJSとの簡単な違いを扱います。
「ESMの基礎 — import/export、defaultとnamed」はCoddyKit上の無料JavaScript Academyレッスンです。 これはレッスン1/3です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはJavaScript Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 JavaScript Academyコースには全3レッスンが含まれています。
モジュールとは
目標:モジュール構文を自信を持って読めるようにします。
- モジュールとは何か
- 名前付きエクスポートとデフォルトエクスポートの違い
- 名前空間としてのimport *
- CJSとの簡単な比較

モジュール = ファイル + ローカルスコープ
モジュールはファイルです。変数はexportしない限りローカルです。
// A module is just a file with its own scope
// Here we simulate "module scope" by keeping variables local.
(function () {
const secret = 42; // local to this file/scope
function reveal() { return "value:" + secret; }
console.log("module-like scope:", typeof secret === "number", reveal());
})();
名前付きエクスポート — 考え方
名前付きエクスポートをインポートするには、中かっこを使います:import { name }。1つのファイルから複数の項目をエクスポートできます。
// Named exports: you export multiple items by name
const exampleNamedExport = [
"export const PI = 3.14;",
"export function sum(a, b) { return a + b; }",
"import { PI, sum } from \\"./math.js\\";"
];
console.log("named export example:");
for (const line of exampleNamedExport) console.log(line);
// Tiny emulation: pretend we imported two named symbols
const PI = 3.14;
function sum(a, b) { return a + b; }
console.log("emulated use:", PI, sum(2, 3));
デフォルトエクスポート — 考え方
デフォルトエクスポートは、中かっこを使わずにインポートします:import name from "path"。
// Default export: each module can have at most one default
const exampleDefault = [
"export default function greet(name) { return \\"Hi \\" + name; }",
"import greet from \\"./greet.js\\"; // no braces"
];
console.log("default export example:");
for (const line of exampleDefault) console.log(line);
// Emulation of default import usage
function greet(name) { return "Hi " + name; }
console.log("emulated default:", greet("Ayla"));
名前空間インポート
import * as nsを使うと、名前付きエクスポートを1つのオブジェクトにまとめられます(例:math.sum)。
// Namespace import collects all named exports under one object
const exampleNamespace = [
"import * as math from \\"./math.js\\";",
"console.log(math.PI, math.sum(1, 2));"
];
console.log("namespace import example:");
for (const line of exampleNamespace) console.log(line);
// Emulate a namespace object
const math = { PI: 3.14, sum: function (a, b) { return a + b; } };
console.log("namespace use:", math.PI, math.sum(4, 5));
CJSとの違いと解決に関するメモ
CJSとESMの違い(概要):
- ESM:import/export構文を使います(静的)。例:import { x } from "./m.js"。
- CJS:require/module.exportsを使います(動的)。例:const x = require("./m.js")。
- ESMでは、ブラウザーや多くのNode環境で明示的なファイル拡張子を使用します(例:./file.js)。

名前付きインポートとデフォルトインポートのクイズ
クイックチェック:名前付きインポートの構文です。

まとめ
まとめ:モジュールはファイルです。名前付きエクスポートには中かっこを使い、1つのデフォルトエクスポートには中かっこを使いません。名前空間にはimport *を使用します。CJSではrequire、ESMではimportを使用します。

よくある質問
「ESMの基礎 — import/export、defaultとnamed」レッスンは無料ですか?
はい。「ESMの基礎 — import/export、defaultとnamed」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、JavaScript Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 JavaScript Academyコースには全3レッスンが含まれています。
「ESMの基礎 — import/export、defaultとnamed」で何を学びますか?
ESMのimport/exportの基礎を学びます。モジュールとは何か、namedとdefaultのエクスポート、名前空間インポート、CommonJSとの簡単な違いを扱います。 ブラウザで直接実行するハンズオンコードでJavaScript Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
JavaScript Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのJavaScript Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/3です。
「ESMの基礎 — import/export、defaultとnamed」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このJavaScript Academyレッスンでコードを書いて実行できますか?
はい。すべてのJavaScript Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- ESMの基礎 — import/export、defaultとnamed
- CommonJSの基礎 — require/module.exportsとexports
- Nodeとブラウザのバンドラーにおけるモジュール解決