ホームページ  >  記事  >  ウェブフロントエンド  >  Node.js がモジュールをロードし、モジュール インスタンスをインストールする方法の詳細な説明

Node.js がモジュールをロードし、モジュール インスタンスをインストールする方法の詳細な説明

伊谢尔伦
伊谢尔伦オリジナル
2017-07-24 10:17:571798ブラウズ

Node.js のモジュールは、ファイル パスまたは名前を通じてモジュール参照を取得できます。モジュール参照は、Node 組み込みモジュールでない限り、js ファイル パスにマップされます。 Node の組み込みモジュールは、一般的に使用されるいくつかの API を開発者に公開しており、それらは Node プロセスの開始時にプリロードされます。

その他、サードパーティ モジュールや NPM 経由でインストールされたローカル モジュールなど、各モジュールはパブリック API を公開します。開発者がそれをインポートできるようにします。たとえば、

var mod = require('module_name')

この文を実行すると、Node は組み込みモジュール、または NPM を通じてインストールされたモジュールを読み込みます。 require 関数はオブジェクトを返します。オブジェクトによって公開される API は、関数、オブジェクト、または関数、配列、または任意のタイプの JS オブジェクトなどの属性です。

ノードモジュールのロードとキャッシュメカニズムは次のとおりです

1) 組み込みモジュール(コアモジュール)をロードします
2) ファイルモジュールをロードします(ファイルモジュール)
3) ファイルディレクトリモジュールをロードします(フォルダ) Module) )
4) node_modules にモジュールをロードします
5) ロードされたモジュールを自動的にキャッシュします

1. 組み込みモジュールをロードします

Node の組み込みモジュールはバイナリ形式にコンパイルされ、ファイル パスではなく名前で直接参照されます。サードパーティ モジュールが組み込みモジュールと同じ名前を持つ場合、組み込みモジュールは同じ名前のサードパーティ モジュールを上書きします。したがって、名前を付ける際には、組み込みモジュールと同じ名前にならないように注意する必要があります。たとえば、http モジュール

var http = require('http')

を取得した場合、返される http は、HTTP 関数を実装する Node の組み込みモジュールです。

2. ファイルモジュールをロードします

絶対パス

var myMod = require('/home/base/my_mod')

または相対パス

var myMod = require('./my_mod')

ここでは拡張子「.js」は無視されます。以下は同等です

var myMod = require('./my_mod')
var myMod = require('./my_mod.js')

3. ファイルディレクトリモジュールをロードします

var myMod = require('./folder')

などのフォルダーという名前のディレクトリがあるとします。このとき、ノードはフォルダー ディレクトリ全体を検索し、そのフォルダーがパッケージであると想定し、パッケージ定義ファイルのパッケージを見つけようとします。ジェソン。フォルダー ディレクトリに package.json ファイルが含まれていない場合、Node はデフォルトのメイン ファイルが Index.js であると想定し、index.js を読み込みます。 Index.js も存在しない場合、読み込みは失敗します。

ディレクトリ構造が以下の場合

Node.js がモジュールをロードし、モジュール インスタンスをインストールする方法の詳細な説明

package.jsonは以下のように定義されています

{
    "name": "pack",
    "main": "modA.js"
}

このときrequire('./folder')はモジュールmodA.jsを返します。 package.jsonが存在しない場合は、モジュールindex.jsが返されます。 Index.js も存在しない場合は読み込み例外が発生します。

4. モジュールをnode_modulesにロードします

モジュール名がパスまたは組み込みモジュールではない場合、Nodeは現在のディレクトリのnode_modulesフォルダー内を検索しようとします。現在のディレクトリにnode_modulesが見つからない場合、Nodeは親ディレクトリのnode_modulesから検索し、ルートディレクトリまで再帰的に検索します。

心配しないでください。npm コマンドを使用すると、node_modules ディレクトリを簡単にインストール、アンインストール、更新できます。

5. ロードされたモジュールを自動的にキャッシュします

Node は、毎回再検索することなく、ロードされたモジュールをキャッシュします。以下は例です

modA.js

console.log('模块modA开始加载...')
exports = function() {
    console.log('Hi')
}
console.log('模块modA加载完毕')

init.js

var mod1 = require('./modA')
var mod2 = require('./modA')
console.log(mod1 === mod2)

コマンドライン実行:

node init.js

入力は次のとおりです

Node.js がモジュールをロードし、モジュール インスタンスをインストールする方法の詳細な説明

2 回必要ですが、modA が必要であることがわかります。 .js まだ一度しか実行されていません。 mod1 と mod2 は同じです。つまり、両方の参照が同じモジュール オブジェクトを指します。

以上がNode.js がモジュールをロードし、モジュール インスタンスをインストールする方法の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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