JavaScript Modules: Building Blocks of Modern Web Development

こんにちは、未来のJavaScript魔法使いの皆さん!今日は、JavaScriptモジュールの魅力的な世界に飛び込みます。あなたの近所の親切なコンピュータ教師として、この旅を案内するのを楽しみにしています。では、バーチャルの魔杖(キーボード)を握りしめ、モジュールの魔法をかけてみましょう!

JavaScript - Modules

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というモジュールを作成しています。addsubtractという2つの関数を含んでいます。exportキーワードを使うことで、これらの関数をプログラムの他の部分で利用できるようにします。

では、このモジュールを使ってみましょう:

// main.js
import { add, subtract } from './mathModule.js';

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

ここでは、mathModule.jsファイルからaddsubtract関数をインポートしています。これらの関数を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