目次
1. モジュール化とは
モジュール化とは、複雑な問題を解決するときに、システムを層ごとに上から下までいくつかのモジュールに分割するプロセスを指します。システム全体にとって、モジュールとは、組み合わせ、分解、交換が可能なユニットです。
プログラミング分野におけるモジュール化とは、固定ルールに従い、大きなファイルを独立かつ相互依存する複数の小さなモジュールに分割することです。モジュール分割コードの利点:
(1) コードの再利用性の向上
(2) コードの保守性の向上
(3) オンデマンドローディングが実現可能
モジュール仕様とは、コードをモジュール化して組み合わせるときに従う必要があるルールです。たとえば、モジュールを参照するためにどのような文法形式が使用されているか、モジュール内のメンバーを公開するためにどのような文法形式が使用されているかなどです。モジュール仕様の利点:
全員が同じモジュール仕様に準拠してコードを作成できるため、通信コストが削減され、モジュール間の相互呼び出しが大幅に容易になります。
2.node.jsのモジュール化
1.node.jsにおけるモジュールの分類
node.js では、モジュールはモジュールのさまざまなソースに応じて 3 つのカテゴリに分類されます。
(1)組み込みモジュール(fs、path、http などの組み込みモジュールは Node.js によって公式に提供されます)
(2)カスタム モジュール(ユーザーが作成したすべての .js ファイルがカスタム モジュールです)
(3)サードパーティモジュール(サードパーティが開発したモジュールは、公式の組み込みモジュールやユーザーが作成したカスタムモジュールではなく、使用前にダウンロードする必要があります)
2. モジュールをロードする
強力なrequire()メソッドを使用すると、必要な組み込みモジュール、ユーザー定義モジュール、およびサードパーティ モジュールをロードして使用できます。例えば:
注: require メソッドを使用してモジュールをロードすると、ロードされたモジュール内のコードが実行されます。ユーザー定義モジュールをロードする場合、.js サフィックスは省略できます。
3.node.jsのモジュールスコープ
関数スコープと同様に、カスタム モジュールで定義された変数、メソッド、その他のメンバーには、現在のモジュール内でのみアクセスできます。この種のモジュール レベルのアクセス制限はモジュール スコープと呼ばれます。モジュールスコープはグローバル変数の汚染を防ぎます。
4. 共有モジュールのメンバーのスコープは外側
4.1 モジュールオブジェクト
各 .js カスタム モジュールにはモジュール オブジェクトがあり、現在のモジュールに関連する情報が保存されます。情報は次のように出力されます。
console.log(module)
4.2 module.exports オブジェクト
カスタム モジュールでは、 module.exports オブジェクトを使用して、モジュールのメンバーを外部で使用するために共有できます。外部が require() メソッドを使用してカスタム モジュールをインポートすると、取得されるのは module.exports が指すオブジェクトです。
例:
これで 2 つの js ファイルを作成しました。1 つは「06-modular.js」、もう 1 つは「custom module.js」という名前です。次に、「06-modular.js」に「custom module.js」を導入します。
「06-modular.js」の印刷情報は以下のとおりです。
4.3 エクスポートオブジェクト
module.exports という単語は記述するのがより複雑であるため、メンバーを共有するコードを簡素化するために、Node はエクスポート オブジェクトを提供します。デフォルトでは、exports と module.exports は同じオブジェクトを指します。最終的な共有結果は、依然として module.exports が指すオブジェクトに基づいています。
5.node.jsのモジュール仕様
node.js は、モジュールの特性と各モジュールが相互にどのように依存するかを指定する CommonJS モジュラー仕様に従っています。
CommonJS は以下を指定します。
(1) 各モジュール内で、モジュール変数は現在のモジュールを表します。
(2) モジュール変数はオブジェクトであり、そのエクスポート属性 (つまり module.exports) は外部インターフェイスです。
(3) モジュールをロードすると、実際にはモジュールの module.exports プロパティがロードされます。require() メソッドはモジュールをロードするために使用されます