JavaScript Modules: Building Blocks of Modern Web Development
こんにちは、未来のJavaScript魔法使いの皆さん!今日は、JavaScriptモジュールの魅力的な世界に飛び込みます。あなたの近所の親切なコンピュータ教師として、この旅を案内するのを楽しみにしています。では、バーチャルの魔杖(キーボード)を握りしめ、モジュールの魔法をかけてみましょう!
What is a Module?
巨大なレゴの城を建てているとします。一度に全部を作るよりも、小さな、管理しやすいパーツを作ってそれを組み合わせる方が簡単ではありませんか?JavaScriptのモジュールがやっている的就是これです!
モジュールは、特定の機能を実行する自己完結型のコードです。メインプログラムの中のミニプログラムのようなものです。モジュールはコードを整理し、保守性を高め、アプリケーションの異なる部分で機能を再利用できるようにします。
簡単な例から始めましょう:
// mathModule.js
export function add(a, b) {
return a + b;
}
export function subtract(a, b) {
return a - b;
}
この例では、mathModule.js
というモジュールを作成しています。add
とsubtract
という2つの関数を含んでいます。export
キーワードを使うことで、これらの関数をプログラムの他の部分で利用できるようにします。
では、このモジュールを使ってみましょう:
// main.js
import { add, subtract } from './mathModule.js';
console.log(add(5, 3)); // 出力: 8
console.log(subtract(10, 4)); // 出力: 6
ここでは、mathModule.js
ファイルからadd
とsubtract
関数をインポートしています。これらの関数をmain.js
ファイル内で定義されたかのように使用できます。
Export Multiple Objects from a Single Module
基本を理解したところで、単一のモジュールから複数のオブジェクトをエクスポートする方法を見てみましょう。JavaScriptのツールボックスに複数のツールを詰め込むようなものです!
// toolbox.js
export const hammer = {
use: () => console.log("バン!バン!"),
weight: 2
};
export function screwdriver() {
console.log("ねじを締める!");
}
export class Saw {
cut() {
console.log("サzzz!サzzz!");
}
}
このtoolbox.js
モジュールでは、オブジェクト(hammer
)、関数(screwdriver
)、クラス(Saw
)をエクスポートしています。それらを使ってみましょう:
// workshop.js
import { hammer, screwdriver, Saw } from './toolbox.js';
hammer.use(); // 出力: バン!バン!
console.log(hammer.weight); // 出力: 2
screwdriver(); // 出力: ねじを締める!
const mySaw = new Saw();
mySaw.cut(); // 出力: サzzz!サzzz!
異なるタイプのエクスポートをインポートして使用する方法がわかりましたね?JavaScriptツールのユニバーサルアダプターを持っているようなものです!
Default Exports
時々、主に1つのことをするモジュールがあります。その場合、デフォルトエクスポートを使用できます。チームのスター選手を持っているようなものです!
// superHero.js
export default class SuperHero {
constructor(name) {
this.name = name;
}
fly() {
console.log(`${this.name} is flying!`);
}
}
export function sidekick() {
console.log("I'm here to help!");
}
このモジュールにはデフォルトエクスポート(SuperHero
クラス)と名前付きエクスポート(sidekick
関数)があります。それらを使ってみましょう:
// comicBook.js
import Hero, { sidekick } from './superHero.js';
const batman = new Hero("Batman");
batman.fly(); // 出力: Batman is flying!
sidekick(); // 出力: I'm here to help!
デフォルトエクスポートをインポートする際にカッコを使わないことに注意してください。これがデフォルトエクスポート特有の待遇です!
Rename Import and Export
時々、インポートした関数や変数に別の名前を使いたくなることがあります。JavaScriptはそのためのリネーム機能を提供しています。インポートしたツールにニックネームを付けるようなものです!
// colors.js
export const red = "#FF0000";
export const blue = "#0000FF";
export const green = "#00FF00";
では、インポートしてリネームしてみましょう:
// palette.js
import { red as crimson, blue as navy, green } from './colors.js';
console.log(crimson); // 出力: #FF0000
console.log(navy); // 出力: #0000FF
console.log(green); // 出力: #00FF00
エクスポートの際にもリネームが可能です:
// shapes.js
const circle = (radius) => Math.PI * radius * radius;
const square = (side) => side * side;
export { circle as round, square };
そしてインポートする方法は以下の通りです:
// geometry.js
import { round, square } from './shapes.js';
console.log(round(5)); // 出力: 78.53981633974483
console.log(square(4)); // 出力: 16
Methods Table
ここに、カバーしたメソッドの便利な表を示します:
メソッド | 説明 | 例 |
---|---|---|
export |
関数、オブジェクト、または値を他のモジュールで使用できるようにする | export function add(a, b) { return a + b; } |
import |
他のモジュールから関数、オブジェクト、または値を使用する | import { add } from './mathModule.js'; |
export default |
単一の値をモジュールの主要なエクスポートとして出力する | export default class SuperHero { ... } |
import as |
インポートした値の名前を変更する | import { red as crimson } from './colors.js'; |
export as |
エクスポートした値の名前を変更する | export { circle as round }; |
そして、皆さん!モジュールでJavaScriptスキルをレベルアップしました。実践が完璧にするものなので、これらの概念を試してみてください。間もなく、プロのようにモジュール化されたJavaScriptアプリケーションを構築できるようになるでしょう!
ハッピーコーディング、そしてモジュールと共にいってください!?????
Credits: Image by storyset