NPMを通じてインストールされたサードパーティモジュールやローカルモジュールなど、各モジュールはパブリックAPIを公開します。開発者がインポートできるように。のように
コードコピーは次のとおりです。
var mod = require( 'module_name')
この文が実行された後、NPMからインストールされた内蔵モジュールまたはモジュールはノード内にロードされます。要求関数は、露出したAPIが関数、オブジェクト、または関数、配列、または任意のタイプJSオブジェクトなどの関数、オブジェクト、または属性である可能性があるオブジェクトを返します。
ノードモジュールの読み込みメカニズムとキャッシュメカニズムは次のとおりです
1)組み込みモジュール(コアモジュール)をロードする
2)ファイルモジュール(ファイルモジュール)をロードする
3)ファイルディレクトリモジュール(フォルダーモジュール)をロードする
4)node_modulesにモジュールをロードします
5)ロードされたモジュールを自動的にキャッシュします
1.内蔵モジュールをロードします
ノードの内蔵モジュールはバイナリ形式にコンパイルされ、参照されたときにファイルパスの代わりに名前が直接使用されます。サードパーティモジュールと内蔵モジュールの名前が同じ場合、組み込みモジュールは同じ名前でサードパーティモジュールをオーバーライドします。したがって、名前を付けるときは、組み込みモジュールと同じ名前を持たないように注意する必要があります。 HTTPモジュールを取得した場合
コードコピーは次のとおりです。
var http = require( 'http')
返されたHTTPは、HTTP関数ノードを実装する組み込みモジュールです。
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を見つけようとします。フォルダーディレクトリにPackage.jsonファイルが含まれていない場合、ノードはデフォルトのメインファイルがindex.jsであると想定します。つまり、index.jsはロードされます。 index.jsが存在しない場合、負荷は失敗します。
ディレクトリ構造が次の場合
package.jsonは次のように定義されています
コードコピーは次のとおりです。
{
「名前」:「パック」、
「メイン」:「Moda.js」
}
この時点で必要( './ folder')がモジュールmoda.jsを返します。 package.jsonが存在しない場合、モジュールindex.jsが返されます。 index.jsが存在しない場合、ロード例外が発生します。
4. node_modulesにモジュールをロードします
モジュール名がパスまたは内蔵モジュールでない場合、ノードは現在のディレクトリのnode_modulesフォルダーで検索しようとします。現在のディレクトリのnode_modulesが見つからない場合、ノードは親ディレクトリのnode_modulesから検索し、ルートディレクトリまで再帰的に継続します。
心配しないでください。NPMコマンドを使用すると、node_modulesディレクトリを非常に便利にインストール、アンインストール、更新できます。
5.読み込まれたモジュールを自動的にキャッシュします
ロードされたモジュールのノードは、毎回再検索することなくキャッシュされます。これが例です
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)
コマンドラインの実行:
ノードinit.js
次のように入力してください
2回必要ですが、Moda.jsは1回だけ実行されていることがわかります。 mod1とmod2は同じです。つまり、両方の参照が同じモジュールオブジェクトを指します。