JavaScriptのインポートとエクスポートでモジュール管理を効率化

JavaScriptのインポートとエクスポートでモジュール管理を効率化

JavaScriptのESモジュール機能を活用すると、コードの再利用性を高め、プロジェクト構造を整理できます。本記事では、インポートとエクスポートの使い方を詳しく説明し、効率的なモジュール管理の方法を解説します。

モジュールの基本

モジュールは、ファイル単位で機能を分割し、他のファイルで利用するための仕組みです。

// module.js
export const greet = name => `Hello, ${name}!`;

// main.js
import { greet } from './module.js';
console.log(greet('World'));

名前付きエクスポート

複数のエクスポートを提供する場合。

// utilities.js
export const add = (a, b) => a + b;
export const subtract = (a, b) => a - b;

// main.js
import { add, subtract } from './utilities.js';
console.log(add(2, 3)); // 5
console.log(subtract(5, 2)); // 3

デフォルトエクスポート

1つのモジュールで1つのデフォルトエクスポートを提供します。

// math.js
export default function multiply(a, b) {
  return a * b;
}

// main.js
import multiply from './math.js';
console.log(multiply(2, 3)); // 6

名前付きエクスポートとデフォルトエクスポートの違い

両者の違いと使い分け。

// module.js
export const name = 'Module';
export default function greet() {
  return 'Hello from the default export!';
}

// main.js
import greet, { name } from './module.js';
console.log(greet()); // Hello from the default export!
console.log(name); // Module

すべてのエクスポートをインポート

特定の名前空間にまとめてインポートします。

// constants.js
export const PI = 3.14;
export const E = 2.71;

// main.js
import * as constants from './constants.js';
console.log(constants.PI); // 3.14
console.log(constants.E); // 2.71

エイリアスを使用したインポート

名前の衝突を回避するためのエイリアス。

// math.js
export const add = (a, b) => a + b;

// main.js
import { add as sum } from './math.js';
console.log(sum(1, 2)); // 3

動的インポート

必要に応じてモジュールをインポートします。

async function loadModule() {
  const module = await import('./module.js');
  console.log(module.greet('Dynamic Import'));
}

loadModule();

再エクスポート

他のモジュールのエクスポートをそのまま再エクスポート。

// module1.js
export const hello = () => 'Hello';

// module2.js
export { hello } from './module1.js';

// main.js
import { hello } from './module2.js';
console.log(hello()); // Hello

インポート時のパス指定

絶対パスと相対パスの使い分け。

// 相対パス
import { func } from './folder/module.js';

// 絶対パス(設定が必要)
import { func } from 'folder/module.js';

モジュールバンドラーの役割

WebpackやRollupでモジュールを1つのファイルにバンドル。

// Webpack設定例
module.exports = {
  entry: './src/index.js',
  output: {
    filename: 'bundle.js',
    path: __dirname + '/dist',
  },
};

トリートメントシュキング

使用されないコードを削除して効率化。

// tree-shaking.js
export const usedFunction = () => console.log('Used');
export const unusedFunction = () => console.log('Unused');

// main.js
import { usedFunction } from './tree-shaking.js';
usedFunction();

まとめ

JavaScriptのインポートとエクスポートを適切に使うことで、モジュール管理が効率化され、コードの可読性と保守性が向上します。これらのテクニックを活用して、モダンな開発を進めてください。