Die JavaScript -Spezifikation (ECMAScript) definiert nicht einen vollständigen Satz von Standardbibliotheken, die auf die meisten Programme angewendet werden können. CommonJS bietet einen Satz von JavaScript -Standardbibliothekspezifikationen. Knoten implementiert die CommonJS -Spezifikation.
Modul -Grundlagen
Im Knoten entsprechen Module und Dateien nacheinander. Wir definieren ein Modul:
Die Codekopie lautet wie folgt:
// Circle.js
var pi = math.pi;
// Funktionsbereich exportieren
exports.area = function (r) {
return pi * r * r;
}
// Funktionsschaltung der Funktionsschaltung exportieren
exports.circumference = function (r) {
return 2 * pi * r;
};
Hier werden die Funktionen, die exportiert werden müssen, dem Exportobjekt hinzugefügt. Lokale Variablen des Moduls sind extern nicht zugänglich (z. B. die PI -Variable im obigen Beispiel). Anruf benötigt, um den Modulcircle.js zu laden:
Die Codekopie lautet wie folgt:
var Circle = Request ('./ Circle.js');
console.log ('der Bereich eines Radiuskreises 4 ist'
+ Circle.Area (4));
Wie bereits erwähnt, gibt es im Modul ein Modulobjekt, das das Modul selbst darstellt, und Exporte ist das Attribut des Moduls.
Laden von Modulen
Der Knoten puffert geladene Module, um den Overhead des Nachladens zu vermeiden:
Die Codekopie lautet wie folgt:
// test.js
console.log ("Ich bin hier");
Ladenmodul test.js mehrmals
Die Codekopie lautet wie folgt:
// Ausgabe nur einmal "Ich bin hier"
erfordern ('./ Test');
erfordern ('./ Test');
Wenn die Ladedatei kein Suffix hat, versucht der Knoten, das Suffix hinzuzufügen und zu laden:
1..JS (JavaScript -Quelldatei)
2..node (c/c ++ Erweiterungsmodul)
3..JSON (JSON -Datei)
Es gibt mehrere Haupttypen von Modulen:
1. Kernmodul. Die Kernmodule wurden in Knoten zusammengestellt, und wir können diese Kernmodule im Lib -Verzeichnis in seinem Quellcode finden. Common Core Module: NET, HTTP, FS -Modul usw.
2. Dateimodul. Das Dateimodul wird durch einen relativen oder absoluten Pfad geladen, wie z. B. den Circle.js, den wir oben gesehen haben
3. Passen Sie das Modul an. Das benutzerdefinierte Modul befindet sich im Verzeichnis node_modules. Die verschiedenen Module, die wir über NPM installiert haben, werden im Verzeichnis node_modules platziert.
Kernmodule werden immer zuerst geladen. Wenn ein benutzerdefiniertes Modul HTTP vorhanden ist, wird das Kernmodul HTTP beim Laden immer noch anstelle des benutzerdefinierten Moduls HTTP geladen. Wenn Sie ein benutzerdefiniertes Modul laden, suchen Sie zuerst nach dem Verzeichnis node_modules im aktuellen Verzeichnis, dann nach dem Verzeichnis node_modules im übergeordneten Verzeichnis usw. bis zum Stammverzeichnis.
Erfordern sich, wenn das geladene Modul keine Datei ist, sondern ein Verzeichnis, ein solches Verzeichnis wird als Paket bezeichnet. Im Paket befindet sich eine Datei namens Package.json (Paketbeschreibung Datei), zum Beispiel:
Die Codekopie lautet wie folgt:
{"Name": "Ein-Library",
"Main": "./lib/some-library.js"}
wobei Main das Modul angibt, das geladen werden muss. Wenn package.json nicht im Paket oder im Paket vorhanden ist. Json gibt kein Hauptmodul an, dann wird der Knoten versucht, index.js, index.node, index.json zu laden.
Beim Laden eines JavaScript -Moduls ist das geladene Modul in eine Funktion eingewickelt:
Die Codekopie lautet wie folgt:
Funktion (Modul, Exporte, __FileName, __dirname, ...) {
JavaScript -Modul
}
Das Modul, Exporte, __FileName, __Dirname usw. Zugegriffen von jedem JavaScript -Modul werden tatsächlich über Funktionsparameter übergeben. Aufgrund dieser Art von Paket sind lokale Variablen des Moduls extern nicht zugänglich. Aber manchmal gibt es Probleme, die schwer zu verstehen sind, wie z.
Test1.js
Die Codekopie lautet wie folgt:
exports = {
Name: 'Name5566',
}
test2.js
Die Codekopie lautet wie folgt:
module.exports = {
Name: 'Name5566',
}
Laden Sie diese beiden Module:
Die Codekopie lautet wie folgt:
var test1 = require ('./ Test1.js');
console.log (test1.name); // undefiniert
var test2 = require ('./ Test2.js');
console.log (test2.name); // name5566
Exporte werden als Parameter an das Modul übergeben. Wir können dem Exportobjekt exporte.x natürlich Attribute (oder Methoden) zum Exportobjekt hinzufügen, aber direkt dem Wert des formalen Parameters und dem tatsächlichen Parameter, also exportieren, ändert sich direkt den Wert des formalen Parameters.
1. Verwenden Sie beim Hinzufügen von Eigenschaften zum Exporte die Exporte
2. Verwenden Sie modul.exports bei der Zuweisung eines Wertes an den Exportieren
Tasche
Gemäß der CommonJS -Spezifikation sollte ein komplettes Paket enthalten sein:
1.Package.json Paket Beschreibung Datei
2.bin Binärdateiverzeichnis
3.Lib JavaScript -Codeverzeichnis
4.DOC Dokumentverzeichnis
5. Test -Testcode -Verzeichnis
NPM ist ein Paket -Management -Tool für Knoten. Gemeinsame Verwendung:
Die Befehlsdokumentation anzeigen:
Die Codekopie lautet wie folgt:
NPM Hilfe bei der Installation
Sehen Sie sich die Dokumentation für die Befehlsinstallation an.
Ein Paket installieren:
Die Codekopie lautet wie folgt:
NPM install Redis
Installieren Sie das Redis -Paket. Der Befehl Installation wird das Paket im Verzeichnis node_modules im aktuellen Verzeichnis installiert.
Ein Paket entfernen:
Die Codekopie lautet wie folgt:
NPM entfernen Redis
Entfernen Sie das Redis -Paket. Der Befehl entfernen entfernen das Paket im aktuellen Verzeichnis.