Heim  >  Artikel  >  Web-Frontend  >  Detaillierte Erklärung, wie Node.js Module lädt und Modulinstanzen installiert

Detaillierte Erklärung, wie Node.js Module lädt und Modulinstanzen installiert

伊谢尔伦
伊谢尔伦Original
2017-07-24 10:17:571826Durchsuche

Module in Node.js können Modulverweise über Dateipfade oder Namen erhalten. Die Modulreferenz wird einem js-Dateipfad zugeordnet, es sei denn, es handelt sich um ein in Node integriertes Modul. Die integrierten Module von Node stellen Entwicklern einige häufig verwendete APIs zur Verfügung und werden vorab geladen, wenn der Node-Prozess startet.

Bei anderen, wie etwa Modulen von Drittanbietern oder lokalen Modulen, die über NPM installiert werden, stellt jedes Modul eine öffentliche API bereit. Damit Entwickler es importieren können. Nachdem beispielsweise

var mod = require('module_name')

ausgeführt wurde, lädt Node integrierte Module oder über NPM installierte Module. Die Funktion „require“ gibt ein Objekt zurück. Die vom Objekt bereitgestellte API kann eine Funktion, ein Objekt oder ein Attribut wie eine Funktion, ein Array oder sogar jede Art von JS-Objekt sein.

Hier sind die Lade- und Caching-Mechanismen von Knotenmodulen

1) Laden Sie das integrierte Modul (A Core Module)
2) Laden Sie das Dateimodul (A File Module)
3) Laden Sie das Dateiverzeichnismodul (A-Ordner-Modul)
4) Laden Sie das Modul in node_modules
5) Laden Sie das geladene Modul automatisch zwischen

1. Laden Sie das integrierte Modul

Die integrierten Module von Node werden in Binärform kompiliert und direkt über den Namen statt über den Dateipfad referenziert. Wenn ein Modul eines Drittanbieters denselben Namen wie ein integriertes Modul hat, überschreibt das integrierte Modul das Modul eines Drittanbieters mit demselben Namen. Daher muss bei der Benennung darauf geachtet werden, dass der Name nicht mit dem des eingebauten Moduls übereinstimmt. Wenn Sie beispielsweise ein http-Modul

var http = require('http')

erhalten, ist das zurückgegebene http das integrierte Modul von Node, das die HTTP-Funktion implementiert.

2. Laden Sie das Dateimodul

Absoluter Pfad

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

oder relativer Pfad

var myMod = require('./my_mod')

Beachten Sie, dass die Erweiterung hier ignoriert wird. js“, das Folgende ist äquivalent

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

3. Laden Sie das Dateiverzeichnismodul

kann direkt ein Verzeichnis anfordern, vorausgesetzt, es gibt ein Verzeichnis mit dem Namen Ordner, z. B.

var myMod = require('./folder')

An diesem Punkt durchsucht Node das gesamte Ordnerverzeichnis und geht davon aus, dass es sich bei dem Ordner um ein Paket handelt, und versucht, die Paketdefinitionsdatei package.json zu finden. Wenn das Ordnerverzeichnis die Datei package.json nicht enthält, geht Node davon aus, dass die Standardhauptdatei index.js ist, und index.js wird geladen. Wenn index.js ebenfalls nicht vorhanden ist, schlägt das Laden fehl.

Wenn die Verzeichnisstruktur wie folgt ist

Detaillierte Erklärung, wie Node.js Module lädt und Modulinstanzen installiert

package.json ist wie folgt definiert

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

Zu diesem Zeitpunkt require(' ./folder‘) gibt das Modul modA.js zurück. Wenn package.json nicht existiert, wird das Modul index.js zurückgegeben. Wenn index.js ebenfalls nicht vorhanden ist, tritt eine Ladeausnahme auf.

4. Laden Sie das Modul in node_modules

Wenn der Modulname kein Pfad oder ein integriertes Modul ist, versucht Node, im Ordner „node_modules“ des aktuellen Verzeichnisses zu suchen. Wenn die node_modules im aktuellen Verzeichnis nicht gefunden werden, sucht Node von den node_modules im übergeordneten Verzeichnis und führt eine Rekursion bis zum Stammverzeichnis durch.

Keine Sorge, mit dem Befehl npm können wir das Verzeichnis node_modules einfach installieren, deinstallieren und aktualisieren.

5. Automatisches Zwischenspeichern geladener Module

Knoten speichert die geladenen Module zwischen, ohne jedes Mal erneut suchen zu müssen. Hier ist ein Beispiel

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)

Befehlszeilenausführung:

node init.js

Geben Sie Folgendes ein

Detaillierte Erklärung, wie Node.js Module lädt und Modulinstanzen installiert

Sie können sehen, dass „require“ zwar zweimal ausgeführt wird, modA.js jedoch nur einmal ausgeführt wird. mod1 und mod2 sind gleich, das heißt, beide Referenzen verweisen auf dasselbe Modulobjekt.

Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung, wie Node.js Module lädt und Modulinstanzen installiert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn