Heim  >  Artikel  >  Web-Frontend  >  Was ist Node.js? Was sind die Vorteile?

Was ist Node.js? Was sind die Vorteile?

青灯夜游
青灯夜游nach vorne
2021-01-06 17:51:062776Durchsuche

Was ist Node.js? Was sind die Vorteile?

Verwandte Empfehlungen: „nodejs Tutorial

Als treuer Fan von JS ist JavaScript zwar nicht so groß wie das JAVA-Ökosystem, aber JavaScript hat sich von clientseitigen Skripten auf serverseitige Skripte verlagert, was bei uns den Wunsch weckt Beachten Sie, dass JavaScript langsam auf dem Vormarsch ist und wir es aus einer anderen Perspektive lernen müssen.

Was ist Node.js?

Nodejs ist im Wesentlichen eine JavaScript-Laufzeitumgebung.

Basierend auf der V8-Engine von Google handelt es sich tatsächlich um eine Ausführungsumgebung, die aus der V8-Engine von Chrome herausgeschnitten und gekapselt ist.

Gehen wir zur offiziellen Website, um das Paket herunterzuladen und auf narrensichere Weise zu installieren.

Offizielle Website zum Herunterladen von Knoten: https://nodejs.org/en/download/

Geben Sie „Knoten“ in der Befehlszeile ein, um das JavaScript-Skript auszuführen.

Vorteile von Node.js? Warum kann die Skriptsprache JavaScript als Serversprache verwendet werden?

Vorteil 1 Node.js verfügt über extrem hohe Parallelitätsfähigkeiten

Das ursprüngliche Ziel von Node.js besteht darin, eine einfache Möglichkeit zum Erstellen von Hochleistungsservern und zum Ausführen verschiedener Anwendungen in den Programmentwicklungstools des Servers bereitzustellen.

                                                                                                                                                                                 im Vergleich zu klassischen serverseitigen Sprachen wie Java, PHP oder . Ein Thread benötigt 2 MB Speicher. Das heißt. Theoretisch kann ein 8-GB-Server etwa 4.000 gleichzeitig verbundene Benutzer haben. Um mehr Benutzer mit hoher Parallelität zu unterstützen, müssen zusätzliche Server hinzugefügt werden.

                                                                   Node.js erstellt nicht für jede Clientverbindung einen neuen Thread, sondern verwendet nur einen Thread. E Dies ist der Knoten, der auf einem einzelnen Thread basiert (nur ein Hauptthread, der die Anfrage aufnimmt und eine Antwort gibt) Ist das nicht langsamer? Tatsächlich ist dies nicht der Fall.

​ ​ ​ Wenn Node.js eine Benutzerverbindung empfängt, löst es ein internes Ereignis aus. Reagieren Sie auf Benutzerverhalten durch vordefinierte Funktionen. Der Hauptthread von Node.js kümmert sich nicht um den Prozess des Programms. Tatsächlich gibt es einen anderen Arbeitsthread, der dem Hauptthread von Node hilft, auf Dateien zuzugreifen und die Datenbank zu lesen Daten in der Datenbank. Die Rückruffunktion wird zur Ausführung an den Hauptthread des Knotens zurückgegeben, z. B. zum Übertragen der gefundenen Daten zurück an den Client und zum Schließen der Verbindung für einige Vorgänge. (Dies ist ein nicht blockierender Knoten-E/A, ereignisgesteuert).我 上 Ein Bild, das ich unten zeichne (wenn etwas nicht stimmt, verzeihen Sie mir bitte)

Zu diesem Zeitpunkt sollte sich in unserem Kopf ein Prototyp befinden, das heißt, der Hauptthread von Node.js wurde empfangen Die Aufgabe des Anforderns und Beantwortens von Anforderungen ist gemischt, sodass nicht auf E / A-Vorgänge gewartet werden muss, sondern die Ereignisrückruffunktion ausgelöst wird Teilen Sie dem Host mit, dass die Thread-Daten abgerufen wurden. Zu diesem Zeitpunkt führt der Haupt-Thread die Rückruffunktion aus und gibt die Daten an den Client zurück. Theoretisch kann ein Server mit 8G Speicher die Verbindungen von 30.000 bis 40.000 Benutzern gleichzeitig aufnehmen.

Hier glänzt Node (Single-Threaded, nicht blockierende E/A, ereignisgesteuert)

Vorteile 2 Node verwendet JavaScript-Syntax

Node.JS V8-Engine basierend auf JavaScript, das ist es sagte, solange Sie die Syntax von JS kennen, können Sie es für die Back-End-Entwicklung verwenden, Node empfiehlt jedoch offiziell die Syntax von ECMA Script6 (ES6). Node durchbricht die bisherige Situation, in der JavaScript nur im Browser ausgeführt werden kann, und vereinheitlicht die Front-End- und Back-End-Programmierumgebungen, was die Entwicklungskosten erheblich senkt. (Dies ist sehr freundlich zu Front-End-Entwicklern. Je mehr Dinge JS tun kann, desto schneller wird die Front-End-Entwicklung sein)

Vorteile 3 Das Aufkommen von Node.js spielt in den letzten Jahren eine Rolle eine unersetzliche Rolle. S Node.js ist nicht nur eine Betriebsumgebung, sondern auch eine neue JavaScript-Sprache mit einer neuen JS-Grammatikgrundlage. Es fügt auch einige interne Module der Lesedatei r URL hinzu Daten anfordern usw.

Rreeee

node.js integriert auch das NPM-Paketverwaltungstool, sodass wir die Taschen, von denen unser Projekt abhängt, einfach über die Befehlszeile herunterladen können NPM Install -G Create -React -APP usw.

kann verwendet werden, solange das Projekt für die Verwendung von

const http = require('http')

Node eingeführt wurde und benutzerdefinierte Module unterstützt

Node.js beeinflusst in gewissem Maße das Front-End-Entwicklungsmodell. Machen Sie das Front-End-Engineering modular, entwickeln Sie schnell, reduzieren Sie die Codekopplung und verbessern Sie die Wartbarkeit erheblich.

Wofür ist Node.js geeignet?个 Die folgenden Listen sind für mehrere Node.js-Anwendungsszenarien aufgeführt. Obwohl die Vorteile so vieler Node.js oben aufgeführt sind, gibt es keinen Mangel ohne eine Sprache, und Node ist keine Ausnahme. Es kann nur darauf ankommen, für welche Szenarien und Bereiche eine Sprache geeignet ist. D Lassen Sie uns über die Szene sprechen, in der node.js nicht anwendbar ist (fügen Sie einen großen Titel hinzu ↓↓↓). Vor der Version unterstützte Node.js kein Multithreading. Dies ist natürlich eine Frage der Designphilosophie, da die Entwickler und Unterstützer von Node.js fest davon überzeugt sind, dass Single-Thread- und ereignisgesteuerte asynchrone Programmierung effizienter läuft als herkömmliche Multi-Thread-Programmierung. Tatsächlich kann Multithreading den gleichen Durchsatz erreichen, obwohl es teuer sein kann, aber es ist nicht erforderlich, spezielle Konfigurationen für Multi-Core-Umgebungen vorzunehmen. Im Gegensatz dazu muss Node.js aufgrund seiner Single-Thread-Natur einen Multiprozess-Ansatz verwenden, um Multi-Core-Ressourcen vollständig zu nutzen.

Im Idealfall belegt der Single-Thread von Node.js während der Ausführung einen CPU-Kern vollständig und alle Anfragen müssen auf die Verarbeitung der aktuellen Anfrage warten und in die Ereignisschleife eintreten, bevor sie antworten. Wenn eine Anwendung rechenintensiv ist, ist die Latenz bei der Anforderungsantwort beträchtlich, sofern Sie sie nicht manuell unterbrechen. Wenn beispielsweise eine komplexe Berechnung in der Callback-Funktion eines Ereignisses durchgeführt wird und 200 Millisekunden CPU beansprucht, müssen alle Anforderungen in der Ereignisschleife 200 Millisekunden warten. Um die Reaktionsgeschwindigkeit zu verbessern, besteht die einzige Möglichkeit darin, diesen rechenintensiven Teil in mehrere Logiken aufzuteilen, was die Programmierung zusätzlich komplexer macht. Dennoch werden der Gesamtdurchsatz und die Gesamtantwortlatenz des Systems nicht reduziert, aber die Planung wird etwas gerechter. Glücklicherweise gibt es in einem echten Webserver selten einen rechenintensiven Teil, und wenn doch, sollte er nicht für eine sofortige Reaktion implementiert werden. Der richtige Weg besteht darin, dem Benutzer eine Aufforderung zu geben, dass der Server verarbeitet, den Benutzer zu benachrichtigen, wenn die Verarbeitung abgeschlossen ist, und die Arbeit dann anderen Prozessen des Servers oder sogar anderen dedizierten Servern zu überlassen.

②Einzelbenutzer-Multitasking-Anwendung

Was wir zuvor besprochen haben, ist normalerweise serverseitige Programmierung, und eine der Annahmen ist, dass es viele Benutzer gibt. Wenn Sie jedoch mit einem einzelnen Benutzer konfrontiert sind, z. B. mit einem lokalen Befehlszeilentool oder einer grafischen Benutzeroberfläche, ist die sogenannte große Anzahl gleichzeitiger Anforderungen nicht vorhanden. Es entsteht also ein weiteres schreckliches Problem. Obwohl es sich um einen einzelnen Benutzer handelt, handelt es sich nicht unbedingt um eine einzelne Aufgabe. Während beispielsweise eine Schnittstelle für den Benutzer bereitgestellt wird, wird eine bestimmte Berechnung im Hintergrund ausgeführt. Um zu verhindern, dass die Benutzeroberfläche blockiert wird, müssen Sie Multithreading oder Multiprozess aktivieren. Die Kommunikation zwischen Node.js-Threads oder -Prozessen ist bisher unpraktisch, da es überhaupt keine Sperren gibt, sodass es sich nicht um einen Deadlock handelt. Die mehreren Prozesse von Node.js führen oft die gleiche Aufgabe aus und nutzen die Ressourcen mehrerer Prozessoren durch mehrere Prozesse. Wenn jedoch mehrere Prozesse zusammenarbeiten, wird es überlastet.

③Transaktionen mit sehr komplexer Logik

Der Kontrollfluss von Node.js ist nicht linear. Er wird durch Ereignisse unterbrochen, aber das menschliche Denken ist linear. Wenn Sie versuchen, Ihr Denken an die Sprache oder den Compiler anzupassen, dürfen Sie dies nicht tun Es werden keine Opfer gebracht. Sie möchten beispielsweise eine Logik wie diese implementieren: Geld von der Bank abheben, mit dem Geld ein bestimmtes virtuelles Produkt kaufen und es nach dem Kauf zur Inventardatenbank hinzufügen. Jeder Schritt dazwischen kann Dutzende von E/A-Vorgängen umfassen . und ein Rollback-Vorgang muss durchgeführt werden, nachdem ein Vorgang fehlgeschlagen ist. Dieser Prozess ist linear und bereits sehr komplex. Würde man ihn in nichtlineare Logik aufteilen, wäre die Komplexität wahrscheinlich nicht mehr aufrechtzuerhalten. Node.js eignet sich besser für die Bearbeitung von Aufgaben mit einfacher Logik, aber häufigem Zugriff, ist jedoch nicht für die Erledigung von Aufgaben mit sehr komplexer Logik geeignet.

„Okay, das ist meine Zusammenfassung von Node.js, ich werde es nicht mehr sagen, ich schreibe es schon seit langer Zeit, also werde ich es programmieren.“

Für mehr Programmierkenntnisse , besuchen Sie bitte: Programmierunterricht! !

Das obige ist der detaillierte Inhalt vonWas ist Node.js? Was sind die Vorteile?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen