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 テーブル内の行を削除する実用的な方法

推薦する

Vue ポーリング リクエスト ソリューションの完全な例

世論調査の理解実際、ポーリングの焦点はループ自体ではなく、実行間の間隔にあります。 Ajax は非同...

Windows での Tomcat サーバーのインストールに関するチュートリアル

1 ダウンロードして準備するまず、公式ウェブサイトからTomcatをダウンロードする必要があります。...

CSSはカラフルでスマートな影の効果を実現します

背景前景要素から特定の色を継承する影の効果を作成する方法を知りたいと思ったことはありませんか?方法に...

MySQL データベースのバックアップをスケジュールするいくつかの方法 (包括的)

目次1. データをバックアップするためのmysqldumpコマンド2. 一般的なmysqldump操...

さまざまな環境での Docker Compose のインストール方法

1. オンラインインストール現在、Linux x86アーキテクチャのオンラインインストールのみを試し...

nginx で仮想ホストを構成するための詳細な手順

仮想ホストは、インターネット上で実行されているサーバー ホストを複数の「仮想」ホストに分割する特殊な...

MySQL マスタースレーブレプリケーション構成プロセス

メインライブラリの構成1. MySQLを設定する vim /etc/my.cn # ファイルに次の内...

Centos7 での DNS サーバーの構築の概要

目次1. プロジェクト環境: 2: DNSサーバーの設定i: 前方解析を構成する: ii: 逆解像度...

Dockerアーキテクチャ入門

Docker には 3 つの基本概念が含まれています。イメージ: Docker イメージはルート フ...

一般的なDockerコマンドの概要

Dockerのインストール1. 要件: Linuxカーネルバージョン3.10以上 表示: uname...

JS でカルーセル効果を実現する 3 つの簡単な方法

この記事では、JSカルーセル効果の具体的なコードを実現するための3つの方法を紹介します。具体的な内容...

MySQLに画像を保存する方法

1 はじめにデータベースを設計する場合、画像や音声ファイルをデータベースに挿入することは避けられませ...

Vue でバイナリ ファイル ストリームを受信して​​ PDF プレビューを実現する方法

バックグラウンド コントローラー @RequestMapping("/getPDFStre...

CSS3 でクールなスライス画像カルーセル効果を実現

今日は、CSS を使用してクールな画像カルーセル コンポーネントを作成する方法を学びます。その原理は...

DockerでNginxサーバーを作成する方法

動作環境: MAC Docker バージョン: Docker version 17.12.0-ce,...