Die JavaScript-Spezifikation (ECMAScript) definiert keine vollständige Standardbibliothek, die von den meisten Programmen verwendet werden kann. CommonJS bietet eine Reihe von JavaScript-Standardbibliotheksspezifikationen. Der Knoten implementiert die CommonJS-Spezifikation.
Modulgrundlagen
In Node haben Module und Dateien eine Eins-zu-Eins-Entsprechung. Wir definieren ein Modul:
Modul wird geladen
Der Knoten puffert geladene Module, um den Mehraufwand für das erneute Laden zu vermeiden:
Modul test.js mehrmals laden
Wenn Sie eine Datei ohne Suffix laden, versucht Node, ein Suffix hinzuzufügen und zu laden:
1..js (JavaScript-Quelldatei)
2..Knoten (C/C-Erweiterungsmodul)
3..json (JSON-Datei)
Es gibt mehrere Hauptkategorien von Modulen:
1. Kernmodul. Die Kernmodule wurden in Node kompiliert und wir finden diese Kernmodule im lib-Verzeichnis im Quellcode. Gemeinsame Kernmodule: Net-, http-, FS-Module usw.
2. Dateimodul. Dateimodule werden über einen relativen oder absoluten Pfad geladen, wie zum Beispiel „circle.js“
, das wir oben gesehen haben3. Benutzerdefiniertes Modul. Benutzerdefinierte Module befinden sich im Verzeichnis „node_modules“ und die verschiedenen Module, die wir über npm installieren, werden im Verzeichnis „node_modules“
abgelegtDas Kernmodul wird immer zuerst geladen. Wenn ein benutzerdefiniertes Modul http vorhanden ist, wird weiterhin das Kernmodul http anstelle des benutzerdefinierten Moduls http geladen. Suchen Sie beim Laden eines benutzerdefinierten Moduls zunächst nach dem Verzeichnis „node_modules“ im aktuellen Verzeichnis, dann nach dem Verzeichnis „node_modules“ unter dem übergeordneten Verzeichnis und so weiter bis zum Stammverzeichnis.
require Wenn das geladene Modul keine Datei, sondern ein Verzeichnis ist, wird ein solches Verzeichnis als Paket bezeichnet. Im Paket gibt es eine Datei mit dem Namen package.json (Paketbeschreibungsdatei), zum Beispiel:
Wobei main das Modul angibt, das geladen werden muss. Wenn package.json nicht im Paket vorhanden ist oder das Hauptmodul nicht in package.json angegeben ist, versucht Node, index.js, index.node und index.json zu laden.
Beim Laden eines JavaScript-Moduls wird das geladene Modul in eine Funktion eingeschlossen:
Das Modul, die Exporte, der __Dateiname, der __Verzeichnisname usw., auf die jedes JavaScript-Modul zugreift, werden tatsächlich über Funktionsparameter übergeben. Aufgrund dieser Umhüllung sind die lokalen Variablen des Moduls von außen nicht zugänglich. Aber manchmal gibt es Probleme, die schwer zu verstehen sind, wie zum Beispiel:
test1.js
test2.js
Laden Sie diese beiden Module:
Exports wird als Parameter an das Modul übergeben. Wir können dem Exports-Objekt natürlich Attribute (oder Methoden) über exports.x hinzufügen, aber die direkte Zuweisung eines Werts an exports (z. B. exports = x) ändert nur das Formale Parameter statt des tatsächlichen Parameters, daher:
1. Wenn Sie Attribute zu Exporten hinzufügen, verwenden Sie Exporte
2. Wenn Sie Exporten Werte zuweisen, verwenden Sie module.exports
Packen
Gemäß den CommonJS-Spezifikationen sollte ein Komplettpaket Folgendes enthalten:
1.package.json Paketbeschreibungsdatei
2.bin-Binärdateiverzeichnis
3.lib JavaScript-Codeverzeichnis
4.doc-Dokumentverzeichnis
5.Test-Testcode-Verzeichnis
NPM ist ein Paketverwaltungstool für Node. Allgemeine Verwendung:
Sehen Sie sich die Dokumentation für den Befehl an:
Siehe die Dokumentation zum Installationsbefehl.
Installieren Sie ein Paket:
Ein Paket entfernen: