Heim >Web-Frontend >js-Tutorial >Detaillierte Erläuterung des Knotenmodulmechanismus und der asynchronen Verarbeitung_node.js
1. Modulmechanismus
Der Zweck des commonJS-Modulmechanismus besteht darin, js zu erstellen, um ein Ökosystem in Webservern, Desktop-Programmen, Browsern usw. zu bilden. Node js ist eine Implementierung dieser Spezifikation und verwendet require, um andere Dateien einzuführen. In ähnlicher Weise folgt npm auch der von commonJS definierten Paketspezifikation und bildet so ein vollständiges Ökosystem.
Moduldefinition und Export
Zum Beispiel gibt es die folgende Datei mit dem Namen „circle.js“
exports.getName = function(name) { return name }
Modul wird geladen
var circle = require('/circle.js') console.log(circle.getName('WPY'))
Modulladestrategie
Knotenmodule können hauptsächlich in zwei Kategorien unterteilt werden:
Native Module und benutzerdefinierte Module sind vom Knoten selbst definierte Module, wie z. B. HTTP- und FS-Module. Diese Module haben die schnellste Ladegeschwindigkeit.
Es gibt auch eine Kategorie benutzerdefinierter Module, einschließlich Paketmodulen und Dateien, die wir selbst definieren. Unabhängig davon, ob es sich um ein natives Modul oder ein benutzerdefiniertes Modul handelt, wird es nach dem ersten Laden vom Knoten zwischengespeichert, sodass bei der zweiten Anfrage kein Overhead entsteht.
Natives Modulladen:
Nach dem Parsen des Dateinamens sucht die Methode require() zunächst im Modulcache und dann im nativen Modul des Knotens
Aus Datei
laden
module.path Für jedes geladene Dateimodul gibt es beim Erstellen des Modulobjekts ein Pfadattribut. Sein Pfad zeigt auf den Pfad des importierten Moduls.
Beim Anfordern eines absoluten Pfadmoduls wird „node_module“ nicht durchlaufen, um die schnellste Ladegeschwindigkeit zu erzielen.
Asynchrone Programmierung
Hohe mittlere Funktion
Eine High-Level-Funktion ist eine Funktion, die eine Funktion als Parameter oder als Rückgabewert akzeptiert.
function foo(X) { return function() { return x } }
Das größte Feature von NODE ist das opportunistische, ereignisgesteuerte, nicht blockierende IO.
Asynchrone Programmierlösungen
1. Event-Veröffentlichungs-/Abonnementmodell
Der Event-Listener-Modus wird häufig in der asynchronen Programmierung verwendet. Es handelt sich um eine Temporalisierung von Callback-Funktionen, auch bekannt als Publish/Subscribe-Modus.
//订阅 emitter.on("event1", function(message){ console.log(message) }) //发布 emitter.emit("event1", "I am message")
2.Promise-Modus
Das Versprechensobjekt hat drei Zustände: den unvollendeten Zustand, den abgeschlossenen Zustand und den fehlgeschlagenen Zustand.
Das Promise-Objekt muss eine then-Methode haben. Die then-Methode hat die folgenden Anforderungen
1. Rückrufmethoden für Abschlussstatus und Fehlerstatus akzeptieren.
2. Es werden nur Funktionen akzeptiert, andere Objekte werden ignoriert
3. Geben Sie weiterhin das Versprechensobjekt zurück, um Kettenaufrufe zu implementieren