ホームページ >ウェブフロントエンド >フロントエンドQ&A >Nodejs モジュールの検索原理とは何ですか?

Nodejs モジュールの検索原理とは何ですか?

WBOY
WBOYオリジナル
2023-05-14 12:01:37515ブラウズ

Node.js は人気のあるバックエンド開発ツールであり、そのモジュール システムが成功の重要な要素です。 Node.js のモジュール システムには、各ファイルとモジュールを 1 つのことに集中させ、必要に応じて使用するという、シンプルですが強力な原則があります。

Node.js のモジュール システムは、モジュールのエクスポートとインポートに依存しています。各 .js ファイルは独立したモジュールであり、そのインターフェイスの 1 つを他のモジュールで使用するためにエクスポートできます。

require('module-name') を使用してモジュール名をインポートすると、Node.js は次の戦略を使用してモジュール名を見つけます:

1. 組み込みモジュールの検索

Node.js は、起動時に fs、http などのさまざまな組み込みモジュールを読み込みます。 require("module-name") を使用してモジュールをインポートしようとすると、そのモジュールは最初に組み込みモジュールの中から検索されます。

組み込みモジュールが見つかり、モジュールの名前とパスが一致する場合、Node.js はすぐにモジュールを返します。その結果、Node.js を使用すると、開発者は組み込みモジュールを迅速かつ効率的に使用できるようになります。

2. サードパーティ モジュールの検索

Node.js が一致する組み込みモジュールを見つけられない場合、リクエストは Node.js のモジュール リゾルバーに渡されて、それを見つけます。

Node.js では、各モジュールは独自のファイルに配置されます。相対パスのインポートは、モジュールがファイル システム内の他のファイルを参照する必要がある可能性があることを意味します。

パーサーは、相対パスのインポートを検出すると、インポートされたファイルの解析に使用されたパスを使用し、ファイル システム内で対応するファイルを検索します。

Node.js は、まず現在のファイルが存在するディレクトリでモジュールを検索し、次にファイルの親ディレクトリを反復処理してモジュールを見つけます。このプロセスは、モジュールが見つかるまで、または Node.js がファイル システムのルートに到達するまで繰り返されます。

パーサーが相対インポート パスに一致するファイルを見つけた場合、モジュールは require() に返されます。

パーサーがファイルを見つけられないか、無効なファイルを見つけた場合、require() はエラーを発生させます。

3. Node.js モジュールの検索

Node.js が現在ファイルを探しているときに、別のモジュールが Node.js モジュールの検索を要求しようとすると、Node.js は中断します。プロセスを見つけて、Node.js モジュールの検索を開始します。

Node.js のすべてのコア モジュールは .js ファイルを使用して記述され、Node.js インストールの特定のディレクトリに配置されます。 require() で組み込み Node.js モジュール名をインポートしようとすると、Node.js はモジュールを読み取って返し、それに一致するファイルやディレクトリは無視します。

4. グローバル名前付きモジュールの検索

Node.js には、Buffer や process などのグローバル モジュールがいくつかあります。 Node.js はファイル システムを走査してモジュールを見つけないため、これらのモジュールはアプリで require() を使用してインポートできません。多くの場合、global.Buffer や global.process などのグローバル オブジェクトを通じてアクセスされます。

概要

Node.js のモジュール システムにはある程度の柔軟性と順序があるため、コードが他のモジュールと競合することを心配することなく、閉じたモジュールのみを作成できます。 Node.js のモジュール システムは、単純かつ明確な原則を使用します。つまり、各ファイルとモジュールは 1 つのことに集中でき、他のモジュールが使用できるようにインターフェイスをエクスポートできます。 Node.js モジュール システムの仕組みと検索順序を理解すると、Node.js モジュール システムとその仕組みをより深く理解できるようになります。

以上がNodejs モジュールの検索原理とは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。