
JavaScriptのモジュール、ちゃんと理解してる?import/exportをマスターして、コードをレベルアップさせよう!
JavaScriptモジュールとは?import/exportの基本
JavaScriptモジュールは、コードを再利用可能な部品に分割し、整理するための仕組みです。大規模なJavaScriptアプリケーションを開発する上で、コードの保守性、可読性、再利用性を高めるために不可欠です。
モジュールを使用することで、グローバルスコープの汚染を防ぎ、名前の衝突を回避できます。これにより、異なるライブラリやフレームワークを組み合わせて使用する際に問題が発生しにくくなります。
JavaScriptにおけるモジュール化は、ES Modulesという標準規格によって実現されています。ES Modulesでは、import
とexport
というキーワードを使用して、モジュール間で変数、関数、クラスなどを共有します。
export
は、モジュールから外部に公開するものを指定するために使用します。import
は、他のモジュールから公開されたものを自分のモジュールに取り込むために使用します。
exportの使い方:名前付きexportとdefault export
JavaScriptのexport
には、主に「名前付きexport (named export)」と「default export」の2種類があります。
名前付きexportは、複数の変数、関数、クラスなどをエクスポートする際に使用します。エクスポートする際に名前を指定し、import
する側も同じ名前を使用してインポートします。
export const myVariable = 123;
export function myFunction() {
console.log('Hello from myFunction!');
}
default exportは、モジュールから単一の値をエクスポートする際に使用します。モジュールごとに1つだけdefault exportを持つことができます。import
する側は、任意の名前をつけてインポートできます。
const myValue = 456;
export default myValue;
どちらのexportを使用するかは、モジュールの目的や構造によって異なります。一般的には、複数の関連する値をエクスポートする場合は名前付きexport、モジュールの主な値をエクスポートする場合はdefault exportを使用することが推奨されます。
importの使い方:名前付きimportとdefault import
import
は、他のモジュールからエクスポートされた値を取り込むために使用します。export
と同様に、名前付きimportとdefault importの2種類があります。
名前付きimportは、名前付きexportされた値をインポートする際に使用します。{}
の中にエクスポートされた名前を記述します。
import { myVariable, myFunction } from './myModule.js';
default importは、default exportされた値をインポートする際に使用します。任意の名前をつけてインポートできます。
import myValue from './myModule.js';
また、* as
構文を使用すると、モジュールからエクスポートされたすべての値をまとめてオブジェクトとしてインポートできます。
import * as myModule from './myModule.js';
console.log(myModule.myVariable);
console.log(myModule.myFunction());
import
文は、通常、JavaScriptファイルの先頭に記述します。また、from
には、インポート元のモジュールのパスを指定します。
モジュールの種類と拡張子
JavaScriptモジュールは、主に.js
または.mjs
という拡張子を持ちます。.mjs
は、ES Modulesであることを明示的に示すために使用されます。Node.js環境では、.mjs
拡張子を使用することで、ES Modulesとしてファイルを扱うことができます。
ブラウザ環境では、<script type="module">
タグを使用してES Modulesを読み込みます。
<script type="module" src="./myModule.js"></script>
webpackやParcelなどのモジュールバンドラを使用すると、複数のモジュールを1つのファイルにまとめて、ブラウザで効率的に実行できるように最適化できます。
import/exportの注意点
import
とexport
を使用する際には、いくつかの注意点があります。
まず、名前付きexportの場合、import
する側の名前とexport
する側の名前が一致している必要があります。スペルミスなどに注意しましょう。
また、循環参照が発生しないように注意する必要があります。AモジュールがBモジュールをインポートし、BモジュールがAモジュールをインポートするような場合、無限ループが発生する可能性があります。
さらに、Node.js環境でCommonJSモジュール(require
を使用)とES Modulesを混在させる場合は、設定が必要になる場合があります。package.json
の"type": "module"
フィールドを確認してください。
最後に、ブラウザ環境では、モジュールのパスが正しく解決されるように、相対パスまたは絶対パスを正しく指定する必要があります。
参考リンク
まとめ
JavaScriptモジュールは、コードを整理し、再利用性を高めるための強力なツールです。import
とexport
を使いこなすことで、より効率的で保守性の高いJavaScriptアプリケーションを開発することができます。この記事を参考に、ぜひJavaScriptモジュールを活用してみてください。