Node.js の公式 API を通じて、Node.js 自体が多くのコア モジュール http://nodejs.org/api/ を提供していることがわかります。これらのコア モジュールはバイナリ ファイルにコンパイルされており、require('モジュール名) ') 取得します。コア モジュールの読み込み優先度が最も高くなります (これは、コア モジュールと同じ名前のモジュールがある場合に反映されます)
Node.js には、ファイル モジュールと呼ばれるタイプのモジュールもあります。これは、JavaScript コード ファイル (ファイル拡張子として .js)、JSON 形式のテキスト ファイル (ファイル拡張子として .json)、または編集されたファイルにすることができます。 C/C ファイル (ファイル拡張子として .node);
ファイル モジュールのアクセス方法は、require('/filename.suffix') require('./filename.suffix') requrie('../filename.suffix') を介してアクセスします。ファイル サフィックスは省略できます。 「/」で始まる場合は絶対パスでロードすることを意味し、「./」で始まる「../」で始まる場合は相対パスでロードすることを意味し、「./」で始まる場合は同じディレクトリ内のファイルをロードすることを意味します。 🎜>
Node.jsファイルがモジュールである場合、このファイルは Javascript コード、JSON、またはコンパイルされた C/C 拡張機能である可能性があります。
2 つの重要なオブジェクト:
require は外部からモジュールを取得します
エクスポートはモジュール インターフェイスを公開します
*/
var counter = require('./1_modules_custom_counter');
console.log('モジュール [1_modules_custom_counter] への最初の呼び出し');
counter.seOutputVal(10) //10 から始まるカウントを設定します
counter.setIncrement (10); ();
counter.printNextCount();
counter.printNextCount();
counter.printNextCount();
/*
同じモジュールを複数回呼び出す必要があります 繰り返しロードされません
*/
var counter = require('./1_modules_custom_counter');
console.log('モジュール [1_modules_custom_counter] への 2 回目の呼び出し');
counter.printNextCount( );
カスタムソースコードを呼び出すモード
実行すると、exports および module.exports を通じて公開されるすべてのメソッドにアクセスできることがわかります。
例でわかるように、require('./1_modules_custom_counter') を通じてモジュールを 2 回取得しましたが、printNextCount() メソッドは 2 回目の参照後に 60 から開始されました~~~
その理由は、node.js が requirerequire を通じて同じモジュールを複数回呼び出す場合、Node.js はファイル名に基づいてロードされたすべてのファイル モジュールをキャッシュするため、再ロードされないためです。 >
注: ファイル名によるキャッシュは実際のファイル名を参照し、受信パス形式が異なるだけで別のファイルとはみなされません。
私が作成した 1_modules_custom_counter ファイルには printOutputVal() メソッドがありますが、これはエクスポートや module.exports を介した外部パブリック アクセス メソッドを提供しません。
1_modules_load ファイルに直接アクセスして実行するとどうなりますか?
答えは次のとおりです: TypeError: オブジェクト #