node.js の require メソッドの読み込みルールの詳細な説明

node.js の require メソッドの読み込みルールの詳細な説明

require メソッドの読み込みルール

  1. キャッシュからの読み込みを優先する
  2. コアモジュール
  3. パス形式のモジュール
  4. サードパーティモジュール

1. キャッシュからの読み込みを優先する

main.js: a.jsモジュールを実行してロードする

'./a' が必要です

a.js: b.jsモジュールを実行してロードし、aがロードされたことを出力します。

'./b' が必要です
console.log('a.js がロードされました')

b.js: 出力bが読み込まれます

console.log('b.js がロードされました')

結果:

ここに画像の説明を挿入

main は a.js をロードし、その後、b.js をロードするときに a.js がロードされたことを 2 回出力しないことがわかります。Node は渡された ID に従って require.cache からオブジェクトのエクスポート値を直接取り出し、モジュール コードを再度実行しません。

2. コアモジュール

コアモジュールの本質もファイルです。コアモジュールファイルはバイナリファイルにコンパイルされています。名前に従ってロードするだけで済みます。のように:

  • 'fs' が必要です
  • 'http' が必要です

3. パスベースのモジュール

ここで取り上げているパスベースのモジュールは、実際には作成した JS ファイルをロードします。ロードする方法は 4 つあります。

var fooExports = require('./index') // 相対パス、一般的に使用 var fooExports = require('../index') // 相対パス、一般的に使用 var fooExports = require('/index') // ルート ディレクトリ、一般的に使用されない var fooExports = require('D:/demo/index') // ルート ディレクトリ、一般的に使用されない

4. サードパーティモジュール

  1. すべてのサードパーティモジュールはnpm経由でダウンロードする必要があります
  2. 使用する際は、require('パッケージ名')でロードできます。
  3. サードパーティのパッケージがコア モジュールと同じ名前を持つことはできません。

これはコア モジュールでも、パスベース モジュールでも、サードパーティ モジュールでもありません。読み込み方法は次のとおりです

var template = require('art-template') を例に挙げます。

  • まず、現在のファイルが配置されているディレクトリ内のnode_modulesディレクトリを見つけます。
  • 次に、ファイル内のメイン属性を次のように探します。
  • メイン属性は、アートテンプレートのエントリモジュールを記録します。
  • 次に、このサードパーティのパッケージをロードして使用しますが、実際には最終的なロードはファイルのままです
  • package.jsonファイルが存在しないか、mainで指定されたエントリモジュールが存在しない場合
  • すると、Node はディレクトリ内で index.js を自動的に見つけます。つまり、index.js がデフォルトのオプションとして使用されます。
  • 上記の条件のいずれも満たされない場合は、親ディレクトリ内の node_modules ディレクトリが検索されます。
  • 前のレベルにない場合は、前のレベルまで検索を続けます。
  • 現在のディスクルートディレクトリがまだ見つからない場合は、エラーメッセージが表示されます: モジュールxxxが見つかりません

サードパーティモジュールの検索順序: node_modules/art-template > package.json ファイル > メインプロパティ > index.js

これで、node.js の require メソッドの読み込みルールの詳細説明に関するこの記事は終了です。node.js の require メソッドの読み込みルールに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Node.js の require.resolve メソッドの紹介
  • node.js の require 読み込みメカニズムの簡単なシミュレーション
  • Node.js require() ソースコード解釈
  • node.js の require の詳細な説明
  • Node.jsはモジュールをロードするためにrequire()関数を使用します
  • Node.js における require の動作原理の簡単な分析

<<:  Centos7のFirewalldファイアウォールの基本コマンドの詳細な説明

>>:  MySql テーブル内の行を削除する実用的な方法

推薦する

webpackを使用してTypeScriptコードをパッケージ化およびコンパイルする方法を教えます

TypeScript バンドルwebpack 統合通常、実際の開発では、ビルド ツールを使用してコー...

Docker を使用した MySQL のデプロイの詳細説明 (データ永続化)

この記事では、Docker を使用して MySQL をデプロイし、データを保持する方法について簡単に...

mysqldump でデータベースをバックアップするときに特定のライブラリを除外する例

例: mysqldump –all-databases を使用すると、すべてのライブラリがエクスポー...

MySQL 5.7.16 無料インストール版のインストールと設定方法のグラフィックチュートリアル

この記事ではMySQL 5.7.16のインストールと設定方法を記録します。具体的な内容は以下のとおり...

MySQL の悲観的ロックと楽観的ロックの使用例

悲観的ロック悲観的ロックは、データを悲観的であるとみなします。データをクエリするときに、ロックを追加...

...

MySQL データベース開発の 36 の原則 (要約)

序文これらの原則は実際の戦闘から要約されています。あらゆる原則の背後には血なまぐさい教訓があるこれら...

PHP で JSON バックスラッシュを削除する例

1. 「stripslashes($_POST['json']);」メソッドを使用し...

Linux のタイムドログ削除を実装する簡単な方法

導入Linux は、ファイル、ログ、電子メール、バックアップなどを自動的に生成できるシステムです。ハ...

優秀なウェブ開発者が開発スキルを向上させるために知っておくべき10のこと

「開発とは、単にコードを書くだけではない」というのは、3EV の Dan Frost 氏の言葉です。...

WeChatアプレットはユーザーログインモジュールサーバーの構築を実装します

サーバーの構築には node.js を選択しました。まだインストールしていない方は、私の他の nod...

Vueは視覚的なドラッグページエディタを実装します

目次ドラッグアンドドロップの実装ドラッグイベントドラッグして開始リリースゾーンでの移動境界処理、角度...

JavaScript のショートカットのヒント

目次1. 配列を結合する2. 配列をマージする(最初に) 3. 配列の複製4. 構造化分解割り当て5...

HTML テーブル マークアップ チュートリアル (18): テーブル ヘッダー

<br />ヘッダーはテーブルの最初の行を参照します。ヘッダー内のテキストは中央揃えで太...

Linux の高性能ネットワーク IO と Reactor モデルの分析

目次1. 基本概念の紹介2. ネットワークIOの読み取りと書き込みのプロセス3. 5つのLinuxネ...