NodeJS-Tutorial zum asynchronen I/O_node.js
Vorwort
In meinem Bild erschien asynchron zuerst mit Ajax. Ich arbeitete damals noch an .net, und dann kam .net tatsächlich mit einem asynchronen Steuerelement heraus ...
Obwohl ich schließlich herausgefunden habe, dass es nicht asynchron ist ... Dann wird das Frontend häufig asynchron verwendet. Wenn es sich nicht um ein asynchrones Programm handelt, wäre es Ihnen peinlich zu sagen, dass die von Ihnen geschriebenen NodeJs erstellt wurden durch JavaScript.
Die Funktion des asynchronen Programmiermodells hat auch viele Vorteile, aber es ist ein Albtraum für das Design. Asynchrones wird das Timing stören, sodass es die Schwierigkeit des Designs erhöht
Aber die Asynchronität hat die Leistungsverbesserung und das Benutzererlebnis revolutioniert, daher sind die asynchronen Funktionen von NodeJS ziemlich offensichtlich. Heute werden wir es kurz lernen
Asynchrone E/A
Tatsächlich gibt es auf Betriebssystemebene nur zwei E/A-Methoden: blockierend und nicht blockierendIm Blockierungsmodell muss die Anwendung warten, bis die E/A abgeschlossen ist, bevor sie das Ergebnis zurückgibt. Ihre Besonderheit besteht darin, dass sie das Backend aufruft und darauf wartet, dass das System alle Vorgänge abschließt Warten Sie, während nicht blockierende Anrufe sofort zurückgegeben werden
Ich habe zum ersten Mal ein Buch gelesen, aber ich habe das Gefühl, dass die Beschreibung hier nicht klar ist und das asynchrone Modell tatsächlich sehr groß ist, nur eine Verbesserung der Wahrnehmungsebene
Ich habe jetzt zwei Einzelseiten-Anwendungsansichten, eine Suchseite und eine Listenseite. Wenn ich verschiedene Kanäle durchsuchen muss, muss der Drittanbieter Daten von bestimmten Kanälen abrufen
Natürlich ist es zu diesem Zeitpunkt sehr langsam, wenn ich direkt von A nach B wechsle und dann eine Ladebox oder etwas anderes erstelle, um Daten in B zu laden. Aber das Problem ist jetzt, dass ich eine Animation benötige Effekte, um von A nach B zu wechseln
Dies setzt voraus, dass das Bview-Rendering beim Umschalten beendet ist. Zumindest werden dabei keine Daten abgerufen und das Rendern gestartet. Daher ist die asynchrone Verwendung zu diesem Zeitpunkt möglicherweise nicht so einfach. Selbst wenn Daten asynchron angefordert werden, ist dies ebenfalls erforderlich Datenerfassung zum Laden der Seite
Dies blockiert immer noch das Laden, und aus geschäftlicher Sicht gibt es keine Möglichkeit, dies zu tun
Keine Technologie ist perfekt. Das Nichtblockieren führt nicht nur zu einer Unterbrechung der Logik, sondern erfordert möglicherweise auch eine Abfrage, um zu bestätigen, ob der Ladevorgang abgeschlossen ist (ich habe die Abfrage einmal verwendet, um festzustellen, ob ein DOM generiert wurde).
NodeJs verwendet einen Ereignisschleifenmechanismus. Bei jeder Ausführung des Schleifenkörpers wird bei jedem Tick überprüft, ob ein Ereignis erforderlich ist verarbeitet werden
Wenn ja, nehmen Sie das entsprechende Ereignis heraus, führen Sie es aus und geben Sie dann die nächste Logik ein. Wenn nicht, verlassen Sie die Schleife
In jedem Tick-Prozess gibt es einen oder mehrere Beobachter in jeder Ereignisschleife. Der Prozess zur Bestimmung, ob ein Ereignis verarbeitet werden muss, besteht darin, diese Beobachter zu fragen, ob das Ereignis verarbeitet werden muss
Nehmen Sie unser HTML-Event-Modell als Beispiel
Bei HTML ist jedes seiner DOMs ein Beobachter. Nachdem wir einen addEventListener für ein DOM bereitgestellt haben, registrieren wir eine Rückruffunktion dafür Wir registrieren, werden in ein „Container“-Objekt eingefügt. Zu diesem Zeitpunkt handelt es sich lediglich um eine Registrierung. Diese Funktionen werden ausgelöst, nachdem die Bedingungen erfüllt sind (wenn sich die Seite ändert), und die relevanten Ereignisse werden aus dem Container entnommen ausgeführtWir klicken nun einmal auf einen Punkt auf der Seite, nehmen dann die Klickereignissammlung aus dem Container, suchen das entsprechende DOM und lösen dann die Rückruffunktionen dieser DOM aus
Ereignisse können durch Benutzerklicks oder Datenänderungen entstehen. In Node entstehen Ereignisse hauptsächlich durch Netzwerkanforderungen und Datei-E/A. Diese Ereignisse verfügen über entsprechende Beobachter, z. B. Dateibeobachter und Netzwerkbeobachter
Dies ist auch ein typisches Produktions-/Verbrauchsmodell, asynchrone E/A, Netzwerkanforderungen sorgen für die Ereignisproduktion, Ereignisse werden an verschiedene Beobachter übermittelt, Beobachter registrieren Ereignisse und die Ereignisschleife ist dafür verantwortlich, Ereignisse herauszunehmen und dann auszuführen
PS: Am Beispiel eines Klicks registriert jeder DOM-Beobachter zuerst das Ereignis, der Seitenprozess überwacht die Seite kontinuierlich, der Benutzer klickt auf die Seite, um Ereignisse zu generieren, und dann wird das registrierte Klickereignis aus dem Container entnommen und ausgeführt ,
Allgemeine Funktionslogik wird von uns gesteuert:
callback(list[i], i, list);
}
}
};
fs.open öffnet eine Datei basierend auf dem Pfad und den Parametern, um relevante Daten abzurufen. Es ruft intern die c-bezogene Schnittstelle auf und generiert dabei ein Zwischenobjekt, in dem alle unsere Zustände angezeigt werden...
PS: Ich fühle mich schlecht, nachdem ich es so lange gesehen habe
Fazit
Das Obige dreht sich alles um asynchrone E/A in nodejs. Wenn es Auslassungen oder Fehler gibt, weisen Sie bitte darauf hin.

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Die Hauptunterschiede zwischen Node.js und Tomcat sind: Laufzeit: Node.js basiert auf der JavaScript-Laufzeit, während Tomcat ein Java-Servlet-Container ist. E/A-Modell: Node.js verwendet ein asynchrones, nicht blockierendes Modell, während Tomcat synchrones Blockieren verwendet. Parallelitätsbehandlung: Node.js verarbeitet die Parallelität über eine Ereignisschleife, während Tomcat einen Thread-Pool verwendet. Anwendungsszenarien: Node.js eignet sich für Echtzeit-, datenintensive und Anwendungen mit hoher Parallelität, und Tomcat eignet sich für herkömmliche Java-Webanwendungen.

Node.js ist eine serverseitige JavaScript-Laufzeitumgebung, während Vue.js ein clientseitiges JavaScript-Framework zum Erstellen interaktiver Benutzeroberflächen ist. Node.js wird für die serverseitige Entwicklung verwendet, beispielsweise für die Entwicklung von Back-End-Service-APIs und die Datenverarbeitung, während Vue.js für die clientseitige Entwicklung verwendet wird, beispielsweise für Single-Page-Anwendungen und reaktionsfähige Benutzeroberflächen.

Node.js kann als Backend-Framework verwendet werden, da es Funktionen wie hohe Leistung, Skalierbarkeit, plattformübergreifende Unterstützung, ein umfangreiches Ökosystem und einfache Entwicklung bietet.

Es gibt zwei npm-bezogene Dateien im Node.js-Installationsverzeichnis: npm und npm.cmd. Die Unterschiede sind wie folgt: unterschiedliche Erweiterungen: npm ist eine ausführbare Datei und npm.cmd ist eine Befehlsfensterverknüpfung. Windows-Benutzer: npm.cmd kann über die Eingabeaufforderung verwendet werden, npm kann nur über die Befehlszeile ausgeführt werden. Kompatibilität: npm.cmd ist spezifisch für Windows-Systeme, npm ist plattformübergreifend verfügbar. Nutzungsempfehlungen: Windows-Benutzer verwenden npm.cmd, andere Betriebssysteme verwenden npm.

Um eine Verbindung zu einer MySQL-Datenbank herzustellen, müssen Sie die folgenden Schritte ausführen: Installieren Sie den MySQL2-Treiber. Verwenden Sie mysql2.createConnection(), um ein Verbindungsobjekt zu erstellen, das die Hostadresse, den Port, den Benutzernamen, das Passwort und den Datenbanknamen enthält. Verwenden Sie „connection.query()“, um Abfragen durchzuführen. Verwenden Sie abschließend Connection.end(), um die Verbindung zu beenden.

Ja, Node.js ist eine Backend-Entwicklungssprache. Es wird für die Back-End-Entwicklung verwendet, einschließlich der Handhabung serverseitiger Geschäftslogik, der Verwaltung von Datenbankverbindungen und der Bereitstellung von APIs.

Die folgenden globalen Variablen sind in Node.js vorhanden: Globales Objekt: global Kernmodul: Prozess, Konsole, erforderlich Laufzeitumgebungsvariablen: __dirname, __filename, __line, __column Konstanten: undefiniert, null, NaN, Infinity, -Infinity

Die Hauptunterschiede zwischen Node.js und Java sind Design und Funktionen: Ereignisgesteuert vs. Thread-gesteuert: Node.js ist ereignisgesteuert und Java ist Thread-gesteuert. Single-Threaded vs. Multi-Threaded: Node.js verwendet eine Single-Threaded-Ereignisschleife und Java verwendet eine Multithread-Architektur. Laufzeitumgebung: Node.js läuft auf der V8-JavaScript-Engine, während Java auf der JVM läuft. Syntax: Node.js verwendet JavaScript-Syntax, während Java Java-Syntax verwendet. Zweck: Node.js eignet sich für I/O-intensive Aufgaben, während Java für große Unternehmensanwendungen geeignet ist.
