Andere wie Drittanbietermodule oder lokale Module, die über NPM installiert sind, enthüllt jedes Modul eine öffentliche API. Damit Entwickler importieren können. wie
Die Codekopie lautet wie folgt:
var mod = require ('module_name')
Nachdem dieser Satz ausgeführt wurde, wird das integrierte Modul oder Modul, das über NPM installiert ist, innerhalb des Knotens geladen. Die erforderliche Funktion gibt ein Objekt zurück, dessen exponierte API eine Funktion, ein Objekt oder ein Attribut wie eine Funktion, ein Array oder sogar ein willkürliches JS -Objekt sein kann.
Hier finden Sie die Lade- und Caching -Mechanismen von Knotenmodulen
1) Laden Sie das eingebaute Modul (ein Kernmodul).
2) Laden Sie das Dateimodul (ein Dateimodul).
3) Laden Sie das Dateiverzeichnismodul (ein Ordnermodul).
4) Laden Sie das Modul in node_modules
5) automatisch geladene Module Cache
1. Laden Sie das eingebaute Modul
Das integrierte Modul des Knotens wird in eine binäre Form kompiliert, und der Name wird direkt anstelle des Dateipfads verwendet, wenn sie verwiesen werden. Wenn ein Drittanbietermodul und ein integriertes Modul denselben Namen haben, überschreibt das integrierte Modul das Drittanbietermodul mit demselben Namen. Bei der Benennung müssen Sie daher darauf achten, dass Sie nicht denselben Namen wie das integrierte Modul haben. Wenn Sie ein HTTP -Modul erhalten
Die Codekopie lautet wie folgt:
var http = required ('http')
Das zurückgegebene HTTP ist ein integriertes Modul, das den HTTP-Funktionsknoten implementiert.
2. Laden Sie das Dateimodul
Absoluter Weg
Die Codekopie lautet wie folgt:
var MyMod = Request ('/home/base/my_mod')
oder relativer Weg
Die Codekopie lautet wie folgt:
var MyMod = require ('./ my_mod')
Beachten Sie, dass die Erweiterung ".js" hier ignoriert wird und das Folgende ist Peer
Die Codekopie lautet wie folgt:
var MyMod = require ('./ my_mod')
var MYMOD = require ('./ my_mod.js')
3. Laden Sie das Dateiverzeichnismodul
Sie können direkt ein Verzeichnis benötigen, vorausgesetzt, es gibt ein Verzeichnis namens Ordner wie z.
Die Codekopie lautet wie folgt:
var MyMod = Request ('./ Ordner')
Zu diesem Zeitpunkt sucht der Knoten das gesamte Ordnerverzeichnis, der Knoten wird davon ausgehen, dass der Ordner ein Paket ist und versucht, das Paket -Definition -Dateipaket zu finden.json. Wenn das Ordnerverzeichnis nicht die Paket.json -Datei enthält, geht der Knoten davon aus, dass die Standard -Hauptdatei index.js ist, was bedeutet, dass Index.js geladen wird. Wenn Index.js nicht vorhanden ist, fällt das Laden fehl.
Wenn die Verzeichnisstruktur wie folgt ist
package.json ist wie folgt definiert
Die Codekopie lautet wie folgt:
{
"Name": "Pack",
"Main": "moda.js"
}
Zu diesem Zeitpunkt gibt ('./ Ordner') das Modul moda.js. Wenn Package.json nicht vorhanden ist, wird der Modul index.js zurückgegeben. Wenn Index.js nicht vorhanden ist, tritt eine Lastausnahme auf.
4. Laden Sie das Modul in node_modules
Wenn der Modulname kein Pfad oder ein integriertes Modul ist, versucht der Knoten, im Ordner node_modules des aktuellen Verzeichnisses zu suchen. Wenn die NODE_MODULES im aktuellen Verzeichnis nicht gefunden werden, sucht der Knoten aus den NODE_MODULES im übergeordneten Verzeichnis und setzt dann rekursiv bis zum Stammverzeichnis fort.
Machen Sie sich keine Sorgen, mit dem Befehl npm können wir das Verzeichnis node_modules sehr bequem installieren, deinstallieren und aktualisieren.
5. automatisch geladene Module cache
Der Knoten für das geladene Modul wird zwischengespeichert, ohne jedes Mal erneut zu suchen. Hier ist ein Beispiel
moda.js
Die Codekopie lautet wie folgt:
console.log ('Modul moda beginnt zu laden ...')
exports = function () {
console.log ('hi')
}
console.log ('Modul moda wurde geladen')
init.js
Die Codekopie lautet wie folgt:
var mod11 = require ('./ moda')
var mod2 = require ('./ moda')
console.log (mod1 === mod2)
Befehlszeilenausführung:
Node init.js
Wie folgt eingeben
Es ist ersichtlich, dass Moda.js zwar zweimal erforderlich ist, aber nur einmal ausgeführt wird. MOD1 und MOD2 sind gleich, dh beide Referenzen weisen auf dasselbe Modulobjekt hin.