JavaScript 仕様 (ECMAScript) は、ほとんどのプログラムで使用できる完全な標準ライブラリを定義していません。 CommonJS は、一連の JavaScript 標準ライブラリ仕様を提供します。ノードは CommonJS 仕様を実装します。
モジュールの基本
Nodeではモジュールとファイルは1対1に対応しています。モジュールを定義します:
モジュールの読み込み
ノードはロードされたモジュールをバッファリングして、再度ロードするオーバーヘッドを回避します:
モジュール test.js を複数回ロードします
サフィックスのないファイルをロードする場合、ノードはサフィックスを追加してロードしようとします:
1..js (JavaScript ソースファイル)
2..node (C/C拡張モジュール)
3..json (JSON ファイル)
モジュールにはいくつかの主要なカテゴリがあります:
1. コアモジュール。コア モジュールは Node にコンパイルされており、これらのコア モジュールはソース コードの lib ディレクトリにあります。共通コアモジュール: net、http、fs モジュールなど
2. ファイルモジュール。ファイル モジュールは、上で見た Circle.js
などの相対パスまたは絶対パスを介してロードされます。3. カスタムモジュール。カスタム モジュールは、node_modules ディレクトリにあり、npm を通じてインストールするさまざまなモジュールは、node_modules ディレクトリ
に配置されます。コア モジュールは常に最初にロードされます。カスタム モジュール http がある場合でも、カスタム モジュール http の代わりにコア モジュール http がロードされます。カスタム モジュールをロードするときは、まず現在のディレクトリでnode_modules ディレクトリを探し、次に親ディレクトリの下のnode_modules ディレクトリを探し、ルート ディレクトリまで同様に検索します。
require ロードされたモジュールがファイルではなくディレクトリである場合、そのようなディレクトリはパッケージと呼ばれます。パッケージには、package.json (パッケージ説明ファイル) という名前のファイルがあります。例:
ここで、main はロードする必要があるモジュールを示します。 package.json がパッケージに存在しない場合、または package.json でメイン モジュールが指定されていない場合、Node は、index.js、index.node、index.json をロードしようとします。
JavaScript モジュールをロードする場合、ロードされたモジュールは関数でラップされます:
各 JavaScript モジュールによってアクセスされるモジュール、エクスポート、__filename、__dirname などは、実際には関数パラメーターを通じて渡されます。このラッピングにより、モジュールのローカル変数には外部からアクセスできなくなります。しかし、場合によっては、次のような理解が難しい問題が発生することがあります。
test1.js
test2.js
次の 2 つのモジュールをロードします:
Exports はパラメーターとしてモジュールに渡されます。exports.x を通じて属性 (またはメソッド) をエクスポート オブジェクトに追加することもできますが、値を直接エクスポート (たとえば、exports = x) に割り当てると、形式的な変更が加えられるだけです。したがって、実際のパラメータの値ではなくパラメータです:
1. エクスポートに属性を追加する場合は、exports
を使用します。
2. エクスポートに値を割り当てる場合は、 module.exports
パック
CommonJS 仕様によれば、完全なパッケージには以下が含まれている必要があります:
1.package.json パッケージ説明ファイル
2.bin バイナリ ファイル ディレクトリ
3.lib JavaScript コードディレクトリ
4.docドキュメントディレクトリ
5.test テストコードディレクトリ
NPM は、Node.js 用のパッケージ管理ツールです。一般的な使用法:
コマンドのドキュメントを参照してください:
インストール コマンドについてはドキュメントを参照してください。
パッケージをインストールします:
パッケージを削除します: