Wir beginnen mit der Veröffentlichung einer Reihe von Materialien, die eine schrittweise Übersetzung des Node.js-
Tutorials für Anfänger darstellen. In diesem Fall ist der „Anfänger“ nämlich jemand, der einige Kenntnisse über Browser-JavaScript hat. Er hörte, dass es eine Serverplattform gibt, deren Programme ebenfalls in JS geschrieben sind, und möchte diese Plattform beherrschen. Vielleicht finden Sie hier etwas Nützliches für sich, auch wenn Sie bereits mit Node.js vertraut sind.
Übrigens hatten wir letztes Jahr ein ähnliches
Projekt in Bezug auf Bash-Skripte. Nachdem wir alle geplanten Materialien veröffentlicht hatten, sammelten wir sie in Form einer
PDF-Datei . Es ist auch geplant, diesmal zu tun.

Heute werden wir die Funktionen von Node.js diskutieren, uns mit dem Ökosystem dieser Plattform vertraut machen und die serverseitige „Hello World“ schreiben.
[Wir empfehlen Ihnen zu lesen] Andere Teile des ZyklusTeil 1:
Allgemeine Informationen und erste SchritteTeil 2:
JavaScript, V8, einige EntwicklungstricksTeil 3:
Hosting, REPL, Arbeit mit der Konsole, ModuleTeil 4:
Dateien npm, package.json und package-lock.jsonTeil 5:
npm und npxTeil 6:
Ereignisschleife, Aufrufstapel, TimerTeil 7:
Asynchrone ProgrammierungTeil 8:
Node.js-Handbuch, Teil 8: HTTP- und WebSocket-ProtokolleTeil 9:
Node.js-Handbuch, Teil 9: Arbeiten mit dem DateisystemTeil 10:
Node.js-Handbuch, Teil 10: Standardmodule, Streams, Datenbanken, NODE_ENVVollständiges PDF des Node.js-Handbuchs Bewertung von Node.js.
Node.js ist eine plattformübergreifende Open Source-JavaScript-Laufzeit, die auf Servern ausgeführt wird. Seit der Veröffentlichung dieser Plattform im Jahr 2009 ist sie äußerst beliebt geworden und spielt heute eine sehr wichtige Rolle im Bereich der Webentwicklung. Wenn Sie die Anzahl der Sterne betrachten, die ein bestimmtes Projekt auf GitHub als Indikator für die Popularität gesammelt hat, dann ist
Node.js mit mehr als 50.000 Sternen ein sehr, sehr beliebtes Projekt.
Die Node.js-Plattform basiert auf der JavaScript V8-Engine von Google, die im Google Chrome-Browser verwendet wird. Diese Plattform wird hauptsächlich zum Erstellen von Webservern verwendet, ihr Umfang ist jedoch nicht darauf beschränkt.
Betrachten Sie die Hauptfunktionen von Node.js.
▍Geschwindigkeit
Eine der attraktivsten Funktionen von Node.js ist die Geschwindigkeit. In Node.js ausgeführter JavaScript-Code kann doppelt so schnell sein wie Code, der in kompilierten Sprachen wie C oder Java geschrieben wurde, und um Größenordnungen schneller als interpretierte Sprachen wie Python oder Ruby. Der Grund dafür ist die nicht blockierende Architektur der Plattform, und die spezifischen Ergebnisse hängen von den verwendeten Leistungstests ab. Im Allgemeinen ist Node.js jedoch eine sehr schnelle Plattform.
▍Einfachheit
Die Node.js-Plattform ist einfach zu erlernen und zu verwenden. In der Tat ist es wirklich sehr einfach, es fällt besonders im Vergleich zu einigen anderen Serverplattformen auf.
▍JavaScript
Node.js führt in JavaScript geschriebenen Code aus. Dies bedeutet, dass Millionen von Front-End-Entwicklern, die bereits JavaScript im Browser verwenden, sowohl Server- als auch Client-Code in derselben Programmiersprache schreiben können, ohne ein völlig neues Tool für die Umstellung auf die Serverentwicklung erlernen zu müssen.
Der Browser und der Server verwenden dieselben Sprachkonzepte. Darüber hinaus können Sie in Node.js schnell auf die Verwendung neuer ECMAScript-Standards umsteigen, wenn diese auf der Plattform implementiert sind. Dazu müssen Sie nicht warten, bis Benutzer ihre Browser aktualisieren, da Node.js eine Serverumgebung ist, die der Entwickler vollständig kontrolliert. Daher sind neue Sprachfunktionen verfügbar, wenn Sie die unterstützende Version von Node.js installieren.
8V8 Motor
Das Herzstück von Node.js ist unter anderem die Open-Source-JavaScript-Engine V8 von Google, die im Google Chrome-Browser und in anderen Browsern verwendet wird. Dies bedeutet, dass Node.js die Errungenschaften von Tausenden von Ingenieuren nutzt, die die JavaScript-JavaScript-Laufzeit unglaublich schnell gemacht haben und weiterhin an der Verbesserung von V8 arbeiten.
▍Asynchronität
In herkömmlichen Programmiersprachen (C, Java, Python, PHP) werden standardmäßig alle Anweisungen blockiert, es sei denn, der Entwickler kümmert sich explizit um die asynchrone Ausführung des Codes. Wenn beispielsweise in einer solchen Umgebung eine Netzwerkanforderung zum Laden eines JSON-Codes gestellt wird, wird die Ausführung des Streams, von dem aus die Anforderung erfolgt, ausgesetzt, bis der Empfang und die Verarbeitung der Antwort abgeschlossen sind.
JavaScript vereinfacht das Schreiben von asynchronem und nicht blockierendem Code mithilfe eines einzelnen Threads, Rückruffunktionen (Rückrufen) und eines ereignisgesteuerten Entwicklungsansatzes erheblich. Jedes Mal, wenn wir eine schwere Operation ausführen müssen, übergeben wir den entsprechenden Rückrufmechanismus, der unmittelbar nach Abschluss dieser Operation aufgerufen wird. Damit das Programm weiterarbeiten kann, muss nicht auf die Ergebnisse solcher Vorgänge gewartet werden.
Ein ähnlicher Mechanismus trat in Browsern auf. Wir können es uns nicht leisten, beispielsweise auf den Abschluss der AJAX-Anforderung zu warten, ohne auf Benutzeraktionen reagieren zu können, z. B. durch Klicken auf Schaltflächen. Damit Benutzer bequem mit Webseiten arbeiten können, muss alles, das Herunterladen von Daten aus dem Netzwerk und das Verarbeiten von Klicks auf Schaltflächen gleichzeitig in Echtzeit erfolgen.
Wenn Sie jemals einen Ereignishandler für Schaltflächenklicks erstellt haben, haben Sie bereits asynchrone Programmiertechniken verwendet.
Durch asynchrone Mechanismen kann ein einzelner Node.js-Server gleichzeitig Tausende von Verbindungen verarbeiten, ohne den Programmierer mit Aufgaben zum Verwalten von Flows und zum Organisieren der parallelen Codeausführung zu beladen. Solche Dinge sind oft Fehlerquellen.
Node.js bietet dem Entwickler nicht blockierende grundlegende Eingabe-Ausgabe-Mechanismen, und im Allgemeinen werden die im Node.js-Framework verwendeten Bibliotheken unter Verwendung nicht blockierender Paradigmen geschrieben. Dies macht das Blockieren von Codeverhalten eher zur Ausnahme als zur Norm.
Wenn Node.js eine E / A-Operation ausführen muss, z. B. das Herunterladen von Daten aus dem Netzwerk, den Zugriff auf eine Datenbank oder ein Dateisystem, anstatt den Hauptthread zu blockieren, der auf die Ergebnisse einer solchen Operation wartet, initiiert Node.js seine Ausführung und führt bis dahin weitere Aktionen aus bis die Ergebnisse dieser Operation empfangen werden.
▍Bibliotheken
Dank der Einfachheit und Bequemlichkeit der Arbeit mit dem Paketmanager für Node.js namens
npm gedeiht das Node.js-Ökosystem. Jetzt gibt es in der
npm-Registrierung mehr als eine halbe Million Open Source-Pakete, die jeder Node.js-Entwickler frei verwenden kann.
Nachdem wir einige der Hauptfunktionen der Node.js-Plattform untersucht haben, werden wir sie in Aktion testen. Beginnen wir mit der Installation.
Installieren Sie Node.js.
Node.js kann auf verschiedene Arten installiert werden, die wir nun betrachten werden.
Offizielle Installationspakete für alle wichtigen Plattformen finden Sie
hier .
Es gibt eine andere sehr bequeme Möglichkeit, Node.js zu installieren, indem Sie den im Betriebssystem verfügbaren Paketmanager verwenden. Beispielsweise heißt der macOS-Paketmanager, der in diesem Bereich de facto der Standard ist,
Homebrew . Wenn es sich auf Ihrem System befindet, können Sie Node.js installieren, indem Sie diesen Befehl in der Befehlszeile ausführen:
brew install node
Eine Liste der Paketmanager für andere Betriebssysteme, einschließlich Linux und Windows, finden Sie
hier .
Ein beliebter Versionsmanager für Node.js ist
nvm . Mit diesem Tool können Sie bequem zwischen verschiedenen Versionen von Node.js wechseln. Mit ihm können Sie beispielsweise die neue Version von Node.js installieren und ausprobieren und dann bei Bedarf zur alten zurückkehren. Nvm ist auch in Situationen nützlich, in denen Sie Code für die alte Version von Node.js ausprobieren müssen.
Ich würde Anfängern raten, offizielle Node.js-Installationsprogramme zu verwenden. Für MacOS-Benutzer würde ich empfehlen, Node.js mit Homebrew zu installieren. Nachdem Sie Node.js installiert haben, ist es Zeit, "Hello World" zu schreiben.
Die erste Node.js-Anwendung
Das häufigste Beispiel für die erste Anwendung für Node.js ist ein einfacher Webserver. Hier ist sein Code:
const http = require('http') const hostname = '127.0.0.1' const port = 3000 const server = http.createServer((req, res) => { res.statusCode = 200 res.setHeader('Content-Type', 'text/plain') res.end('Hello World\n') }) server.listen(port, hostname, () => { console.log(`Server running at http://${hostname}:${port}/`) })
Um diesen Code auszuführen, speichern Sie ihn in der Datei
server.js
und führen Sie den folgenden Befehl im Terminal aus:
node server.js
Um den Server zu überprüfen, öffnen Sie einen Browser und geben Sie http:
http://127.0.0.1:3000
in die Adressleiste ein,
http://127.0.0.1:3000
die Serveradresse, die nach dem erfolgreichen Start in der Konsole angezeigt wird. Wenn alles so funktioniert, wie es sollte, wird "Hallo Welt" auf der Seite angezeigt.
Schauen wir uns dieses Beispiel an.
Beachten Sie zunächst, dass der Code den Befehl
http module connect enthält.
Die Node.js-Plattform ist Eigentümer eines wunderbaren
Standardsatzes von Modulen , der gut entwickelte Mechanismen für die Arbeit mit dem Netzwerk enthält.
Die Methode
createServer()
des
http
Objekts erstellt einen neuen HTTP-Server und gibt ihn zurück.
Der Server ist so konfiguriert, dass er einen bestimmten Port auf einem bestimmten Host überwacht. Wenn der Server bereit ist, wird der entsprechende Rückruf aufgerufen, der uns darüber informiert, dass der Server funktioniert.
Wenn der Server die Anforderung empfängt, wird das
request
ausgelöst, das zwei Objekte bereitstellt. Die erste ist die Anforderung (
req
, das
http.IncomingMessage- Objekt), die zweite ist die Antwort (
res
, das
http.ServerResponse- Objekt). Sie sind die wichtigsten Mechanismen zur Verarbeitung von HTTP-Anforderungen.
Die erste enthält Informationen zu der Anfrage, die uns zur Verfügung steht. In unserem einfachen Beispiel verwenden wir diese Daten nicht, aber bei Bedarf können Sie mit dem
req
Objekt auf die Anforderungsheader und die darin übertragenen Daten zugreifen.
Die zweite wird benötigt, um eine Antwort auf die Anfrage zu bilden und zu senden.
In diesem Fall bilden wir die Antwort auf die Anfrage wie folgt. Setzen Sie zunächst die Eigenschaft
statusCode
auf
200
, um den erfolgreichen Vorgang anzuzeigen:
res.statusCode = 200
Als nächstes setzen wir den
Content-Type
Header:
res.setHeader('Content-Type', 'text/plain')
Danach schließen wir die Vorbereitung der Antwort ab, indem wir ihren Inhalt als Argument zur
end()
-Methode hinzufügen:
res.end('Hello World\n')
Wir haben bereits gesagt, dass sich um die Node.js-Plattform ein leistungsfähiges Ökosystem gebildet hat. Wir werden nun einige beliebte Frameworks und Hilfstools für Node.js diskutieren.
Frameworks und Hilfstools für Node.js
Node.js ist eine Low-Level-Plattform. Um die Entwicklung zu vereinfachen und Programmierern das Leben zu erleichtern, wurde eine Vielzahl von Bibliotheken erstellt. Einige von ihnen sind im Laufe der Zeit sehr beliebt geworden. Hier ist eine kurze Liste von Bibliotheken, die meiner Meinung nach hervorragend erstellt wurden und die es wert sind, erkundet zu werden:
- Express Diese Bibliothek bietet dem Entwickler ein äußerst einfaches, aber leistungsstarkes Tool zum Erstellen von Webservern. Der Schlüssel zum Erfolg von Express war ein minimalistischer Ansatz und die Konzentration auf grundlegende Servermechanismen, ohne zu versuchen, eine bestimmte Vision der „nur richtigen“ Serverarchitektur durchzusetzen.
- Meteor Dies ist ein leistungsstarkes Full-Stack-Framework, das einen isomorphen Ansatz zur Entwicklung von JavaScript-Anwendungen und zur Verwendung von Code sowohl auf dem Client als auch auf dem Server implementiert. Früher war Meteor ein unabhängiges Tool, das alles enthält, was ein Entwickler möglicherweise benötigt. Jetzt ist es auch in Front-End-Bibliotheken wie React , Vue und Angular integriert . Meteor kann neben der Entwicklung herkömmlicher Webanwendungen auch in der mobilen Entwicklung eingesetzt werden.
- Koa Dieses Webframework wurde von demselben Team erstellt, das an Express arbeitet. Bei der Entwicklung, die auf jahrelanger Erfahrung mit Express beruhte, wurde auf die Einfachheit der Lösung und ihre Kompaktheit geachtet. Dieses Projekt schien eine Lösung für das Problem zu sein, ernsthafte Änderungen an Express vorzunehmen, die nicht mit anderen Framework-Mechanismen kompatibel sind, die die Community spalten könnten.
- Next.js. Dieses Framework dient zum Organisieren des serverseitigen Renderns von React- Anwendungen.
- Micro . Dies ist eine sehr kompakte Bibliothek zum Erstellen von asynchronen HTTP-Mikrodiensten.
- Socket.io . Dies ist eine Bibliothek zum Entwickeln von Echtzeit-Netzwerkanwendungen.
Tatsächlich finden Sie im Node.js-Ökosystem eine Hilfsbibliothek, mit der Sie fast jede Aufgabe lösen können. Wie Sie wissen, braucht der Aufbau eines solchen Ökosystems viel Zeit. Die Node.js-Plattform erschien 2009. Während seiner Existenz ist viel passiert, was für einen Programmierer, der diese Plattform lernen möchte, wissenswert ist.
Eine kurze Geschichte von Node.js.
Node.js ist dieses Jahr 9 Jahre alt. Dies ist natürlich nicht so viel, wenn wir dieses Alter mit dem Alter von JavaScript vergleichen, das bereits 23 Jahre alt ist, oder mit dem 25-jährigen Alter des Webs, das in der Form existiert, in der wir es kennen, wenn man vom Erscheinungsbild des Mosaik-Browsers ausgeht.
9 Jahre sind eine kurze Zeitspanne für Technologie, aber jetzt scheint es, dass die Node.js-Plattform immer existiert hat.
Ich habe mit den frühen Versionen der Plattform angefangen, mit Node.js zu arbeiten, als sie erst 2 Jahre alt war. Selbst dann, trotz der Tatsache, dass es nicht so viele Informationen über Node.js gab, konnte man bereits spüren, dass Node.js sehr ernst war.
Lassen Sie uns nun über die Technologien sprechen, die Node.js zugrunde liegen, und kurz die wichtigsten Ereignisse im Zusammenhang mit dieser Plattform betrachten.
JavaScript ist also eine Programmiersprache, die in Netscape als Skriptsprache für die Verwaltung von Webseiten im
Netscape Navigator- Browser erstellt wurde.
Ein Teil des Geschäfts von Netscape war der Verkauf von Webservern, zu denen eine Umgebung namens Netscape LiveWire gehörte. Sie konnten damit dynamische Webseiten mit serverseitigem JavaScript erstellen. Wie Sie sehen können, ist die Idee, JS für die Serverentwicklung zu verwenden, viel älter als Node.js. Diese Idee ist fast so alt wie JavaScript selbst, aber serverseitiges JS hat in den fraglichen Zeiten nicht an Popularität gewonnen.
Einer der Schlüsselfaktoren, aufgrund derer die Node.js-Plattform so weit verbreitet und beliebt geworden ist, ist die Zeit ihres Erscheinens. Einige Jahre zuvor wurde JavaScript als ernsthafte Sprache angesehen. Dies geschah dank Web 2.0-Anwendungen wie Google Maps oder Google Mail, die der Welt die Möglichkeiten moderner Webtechnologien zeigten.
Dank des wettbewerbsfähigen Browserkrieges, der bis heute andauert, hat sich die Leistung von JavaScript-Engines erheblich verbessert. Die Entwicklungsteams hinter den Hauptbrowsern arbeiten jeden Tag daran, die Leistung ihrer Lösungen zu verbessern, was sich allgemein positiv auf JavaScript auswirkt. Eine dieser Engines ist die bereits erwähnte V8, die im Chrome-Browser und in Node.js verwendet wird. Dies ist eines der Ergebnisse des Wunsches von Browser-Entwicklern nach leistungsstarkem JS-Code.
Natürlich basiert die Popularität von Node.js nicht nur auf einer erfolgreichen Kombination von Umständen und auf der Tatsache, dass diese Plattform zum richtigen Zeitpunkt erschien. Sie führte die Welt in einen innovativen Ansatz zur serverseitigen Entwicklung in JavaScript ein. Betrachten Sie die Meilensteine in der Geschichte von Node.js.
2009
- Das Aufkommen von Node.js
- Erstellen Sie die erste npm- Option.
▍2010
▍2011
- Beenden Sie npm 1.0.
- Große Unternehmen wie LinkedIn und Uber nutzen Node.js.
▍2012
- Der rasche Anstieg der Popularität von Node.js.
▍2013
- Das Aufkommen von Ghost , der ersten großen Publishing-Plattform, die Node.js verwendet.
- Koa Release.
▍2014
- In diesem Jahr fanden dramatische Ereignisse statt. Das IO.js- Projekt erschien , eine Abzweigung von Node.js, dessen Zweck unter anderem darin bestand, die ES6-Unterstützung einzuführen und die Entwicklung der Plattform zu beschleunigen.
▍2015
- Gründung der Node.js Foundation .
- Zusammenführung von IO.js und Node.js.
- In npm besteht die Möglichkeit, mit privaten Modulen zu arbeiten.
- Ausgabe von Node.js 4 (es ist zu beachten, dass diese Plattform nicht über die Versionen 1, 2 und 3 verfügte).
▍2016
- Vorfall mit dem Paket für das linke Pad .
- Das Aussehen von Garn .
- Beenden Sie Node.js 6.
▍2017
- Npm konzentriert sich zunehmend auf Sicherheit.
- Ausgabeknoten.js 8
- Das Aufkommen der HTTP / 2- Unterstützung.
- V8 ist offiziell als JS-Engine anerkannt, die nicht nur für Chrome, sondern auch für Node entwickelt wurde.
- Wöchentlich werden 3 Milliarden Downloads von npm durchgeführt.
182018
- Beenden Sie Node.js 10.
- Unterstützung für ES-Module .
- Experimentelle Unterstützung für mjs .
Zusammenfassung
Heute haben Sie die Node.js-Plattform kennengelernt, ihre Installation herausgefunden, die erste einfache Anwendung geschrieben und getestet. Das nächste Mal werden wir darüber sprechen, wie viel JavaScript-Wissen Sie benötigen, um erfolgreich für Node.js zu entwickeln, wie sich der browser- und serverseitige JS-Code unterscheiden, und einige der Entwicklungstricks von Node.js diskutieren.
Liebe Leser! Sag mir, hast du Hello World für Node.js gestartet?
Die folgenden Teile des Handbuchs:
Teil 1:
Allgemeine Informationen und erste SchritteTeil 2:
JavaScript, V8, einige EntwicklungstricksTeil 3:
Hosting, REPL, Arbeit mit der Konsole, ModuleTeil 4:
Dateien npm, package.json und package-lock.jsonTeil 5:
npm und npxTeil 6:
Ereignisschleife, Aufrufstapel, TimerTeil 7:
Asynchrone Programmierung