Guten Tag, Freunde!
Ich präsentiere Ihnen die Übersetzung dieses Node.js-Handbuchs .
Andere Teile:
Teil 1
Teil 2
Teil 3
Teil 4
Einführung in Node.js
Node.js ist eine offene und plattformübergreifende JavaScript-Laufzeit. Dies ist eine großartige Lösung für fast jedes Projekt.
Node.js führt die V8-JavaScript-Engine, den Kern von Google Chrome, außerhalb des Browsers aus. Dies macht Node.js sehr performant.
Node.js-Anwendungen werden als einzelner Prozess ausgeführt, ohne für jede Anforderung einen neuen Thread zu erstellen. Node.js bietet eine Reihe von asynchronen E / A-Grundelementen in der Standardbibliothek, die JavaScript vor Blockierung schützen. In der Regel werden Bibliotheken in Node.js mit nicht blockierenden Paradigmen geschrieben, sodass das Blockierungsverhalten eher die Ausnahme als die Regel ist.
Wenn Node.js eine E / A-Operation ausführt, z. B. das Lesen (von Daten) aus dem Netzwerk, den Zugriff auf eine Datenbank oder ein Dateisystem, anstatt den Thread zu blockieren und auf den Abschluss der CPU-Zyklen zu warten, führt Node.js die Operation nach Erhalt einer Antwort weiter aus.
Auf diese Weise kann Node.js Tausende von Anforderungen gleichzeitig über einen einzelnen Server verarbeiten, ohne dass ein Stream-Konsistenzsystem erforderlich ist, das schwerwiegende Fehler verursachen kann.
Ein wesentlicher Vorteil von Node.js ist, dass Millionen von Entwicklern, die JavaScript für den Browser schreiben, jetzt neben clientseitigem Code auch serverseitigen Code schreiben können, ohne eine völlig andere (Programmier-) Sprache lernen zu müssen.
In Node.js können die neuen ECMAScript-Standards nahtlos verwendet werden. Sie müssen nicht darauf warten, dass alle Benutzer ihre Browser aktualisieren. Sie entscheiden, welche Version von ECMAScript verwendet werden soll, indem Sie die Node.js-Version ändern. Sie können auch experimentelle Funktionen hinzufügen, indem Sie Node.js ausführen mit (entsprechenden) Flags.
Eine große Anzahl von Bibliotheken
Npm trägt mit seiner einfachen Struktur zum schnellen Wachstum des Node.js-Ökosystems bei. Heute sind über 1 Million offene Pakete bei npm registriert, die Sie kostenlos nutzen können.
Anwendungsbeispiel für Node.js.
Der häufigste Anwendungsfall für Node.js ist das Erstellen eines Webservers:
const http = require('http')
const hostname = '127.0.0.1'
const port = process.env.PORT
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}/`)
})
Zunächst fügen wir das http- Modul hinzu .
Node.js verfügt über eine fantastische Standardbibliothek, die erstklassige Netzwerkunterstützung bietet.
Die Methode
createServer()
http
erstellt einen neuen HTTP-Server und gibt ihn zurück.
Der Server ist so eingestellt, dass er einen bestimmten Port und Host überwacht. Wenn der Server bereit ist, wird in diesem Fall eine Rückruffunktion ausgelöst, die anzeigt, dass der Server ausgeführt wird.
Wenn eine neue Anforderung empfangen wird, wird ein Anforderungsereignis ausgelöst, das zwei Objekte enthält: eine Anforderung (ein http.IncomingMessage- Objekt (eine eingehende Nachricht)) und eine Antwort (ein http.ServerResponse- Objekt (eine Serverantwort)).
Diese Objekte sind erforderlich, um einen HTTP-Aufruf zu verarbeiten.
Das erste Objekt enthält die Details der Anforderung. In unserem Beispiel wird es nicht verwendet, aber Sie können auf die Anforderungsheader und deren Daten zugreifen.
Das zweite Objekt wird verwendet, um dem Absender der Anforderung Daten bereitzustellen.
In diesem Fall durch
res.statusCode = 200
Wir setzen die statusCode-Eigenschaft als Indikator für den Erfolg der Anforderung auf 200.
Wir setzen den Content-Type-Header (Inhalt oder Inhaltstyp)
res.setHeader('Content-Type', 'text/plain')
und schließen Sie die Antwort, indem Sie Inhalt als Argument hinzufügen zu
end()
:
res.end('Hello World\n')
Node.js Frameworks und Tools
Node.js ist eine Low-Level-Plattform. Tausende verschiedener Bibliotheken wurden erstellt, um den Anforderungen von Entwicklern gerecht zu werden.
Im Laufe der Zeit sind viele von ihnen sehr beliebt geworden. Hier ist eine Liste von einigen von ihnen:
- AdonisJs: - , . Adonis — - Node.js.
- Express: -. , , .
- Fastify: -, . Fastify -.
- hapi: , .
- koa: Express . - , Express.
- Loopback.io: .
- Meteor: -, JavaScript, . - meteor , , React, Vue Angular. .
- Micro: HTTP-.
- NestJS: TypeScript Node.js- , .
- Next.js: React- .
- Nx: NestJS, Express, React, Angular .. Nx , .
- Socket.io: .
Node.js
Ob Sie es glauben oder nicht, Node.js ist erst 10 Jahre alt.
Im Vergleich dazu gibt es JavaScript seit 24 Jahren und das Web seit 30
Jahren . 10 Jahre sind eine kurze Zeit für Technologie, aber manchmal scheint es, als ob Node.js es schon immer gewesen wäre.
Ich habe Node.js kennengelernt, als seit seiner Gründung nur zwei Jahre vergangen waren, aber selbst dann fühlte es sich trotz der begrenzten Informationen so an, als würde eine große Zukunft auf ihn warten.
In diesem Abschnitt werfen wir einen Blick auf das Gesamtbild der Geschichte von Node.j.
Ein bisschen Geschichte
JavaScript ist eine Programmiersprache, die von Netscape als Skriptwerkzeug zum Bearbeiten von Webseiten im Netscape Navigator- Browser erfunden wurde .
Teil des Geschäftsmodells von Netscape war der Verkauf von Webservern mit dem Netscape LiveWire-Framework, mit dem dynamische Seiten mit serverseitigem JavaScript erstellt werden können. Leider ist Netscape LiveWire fehlgeschlagen und serverseitiges JavaScript war erst bei Node.js beliebt.
Einer der Schlüsselfaktoren für die Popularität von Node.js ist das Timing. JavaScript wurde einige Jahre zuvor dank "Web 2.0" -Anwendungen (wie Flickr, Gmail und anderen) als seriöse (Programmier-) Sprache erkannt, die der Welt zeigten, wie das moderne Web aussehen könnte.
JavaScript-Engines wurden ebenfalls deutlich besser, da Browser die Leistung zum Nutzen der Benutzer verbessern wollten. Die Entwicklerteams der Hauptbrowser haben hart gearbeitet, um die beste Unterstützung für JavaScript und dessen schnellste Ausführung zu implementieren. Die von Node.js verwendete Engine V8 (auch bekannt als Chrome V8 - die Open-Source-JavaScript-Engine des Chromium-Projekts) ging als Sieger aus diesem Wettbewerb hervor.
Node.js entstand zur richtigen Zeit und am richtigen Ort. Glücklicherweise ist dies nicht der einzige Grund für seine Beliebtheit. Das Projekt enthielt eine Vielzahl innovativer Ideen und Ansätze für die serverseitige JavaScript-Entwicklung, die vielen Entwicklern gefallen haben.
2009
- Node.js erschien
- Npm erschien
2010
- ausdrücken
- Socket.io
2011
- npm Version 1.0
- Node.js: LinkedIn, Uber .
- hapi
2012
- Node.js
2013
- - Node.js: Ghost
- Koa
2014
- : Node.js io.js ( — git) ES6
2015
- Node.js Foundation
- IO.js Node.js ( — git)
- npm ()
- Node.js 4 ( 1, 2 3 )
2016
2017
- npm
- Node.js 8
- HTTP/2
- V8 Node.js , Node.js JS Chrome
- 3 npm
2018
- Node.js 10
- Experimentelle Unterstützung für ES-Module mit der Erweiterung .mjs
Wie installiere ich Node.js?
Node.js kann auf verschiedene Arten installiert werden.
Distributionen für wichtige Plattformen sind auf der offiziellen Website verfügbar .
Eine sehr bequeme Möglichkeit, Node.js zu installieren, ist die Verwendung des Paketmanagers. Jedes Betriebssystem hat sein eigenes.
Unter macOS ist dies Homebrew , wodurch es einfach ist, Node.js über die Befehlszeile zu installieren:
brew install node
Eine Liste der Paketmanager für Linux, Windows und andere Systeme finden Sie hier .
nvm
Ist eine beliebte Methode, um Node.js auszuführen. Sie können problemlos zwischen den Versionen von Node.js wechseln, neue Versionen zum Testen installieren und deren Installation rückgängig machen, falls etwas schief gehen sollte.
Dies ist auch sehr nützlich, wenn Sie Code in älteren Versionen von Node.js testen müssen.
Für weitere Details
nvm
folgen Sie diesem Link .
Mein Rat ist, das offizielle Installationsprogramm zu verwenden, wenn Sie gerade erst mit der Entwicklung beginnen und Homebrew noch nicht verwendet haben.
Nach der Installation von Node.js erhalten Sie
node
über die Befehlszeile Zugriff auf das ausführbare Programm .
Wie gut müssen Sie JavaScript kennen, um mit Node.js arbeiten zu können?
Als Anfänger ist es schwierig, Ihr Programmierniveau zu bestimmen.
Es ist auch schwierig zu bestimmen, wo JavaScript endet und Node.js beginnt und umgekehrt.
Persönlich würde ich empfehlen, sich vor dem Eintauchen in Node.js mit den folgenden grundlegenden JavaScript-Konzepten vertraut zu machen:
- Syntax oder lexikalische Struktur
- Ausdrücke (im Wesentlichen dieselbe Syntax)
- Datentypen)
- Variablen
- Funktionen
- Dieses Schlüsselwort
- Pfeilfunktionen
- Schleifen
- Sichtbereich
- Arrays
- Vorlagen- oder Zeichenfolgenliterale
- Ein Semikolon (wahrscheinlich Fälle seiner obligatorischen Verwendung, z. B. bei der Arbeit mit IIFE)
- Strenges Regime
- ECMAScript 6, 2016, 2017
Das Beherrschen dieser Konzepte ist der Beginn des Weges eines professionellen Full-Stack-Entwicklers.
Die folgenden Konzepte sind auch der Schlüssel zum Verständnis der asynchronen Programmierung, die ein wesentlicher Bestandteil von Node.js ist:
- Asynchrone Programmier- und Rückruffunktionen (Rückrufe)
- Timer (Zähler)
- Versprechen Versprechen)
- Async / warten
- Kurzschlüsse
- Ereignisschleife (Aufrufstapel)
Unterschied zwischen Node.js und dem Browser
JavaScript kann sowohl im Browser als auch in Node.js verwendet werden.
Das Erstellen von Browser-Apps unterscheidet sich jedoch stark vom Erstellen von Node.js-Apps.
Trotz der Tatsache, dass in beiden Fällen JavaScript verwendet wird, gibt es einige wesentliche Unterschiede, die die Besonderheiten der Entwicklung bestimmen.
Aus der Sicht eines JavaScript-Frontends (Front-End-Entwickler - die Clientseite einer Anwendung) hat die Entwicklung von Anwendungen in Node.js einen erheblichen Vorteil, der darin zum Ausdruck kommt, dass überall auf dem Client und auf dem Server dieselbe Programmiersprache verwendet wird - JavaScript.
Dies ist eine großartige Gelegenheit, um ein vollständiger Stapel zu werden: Wir alle wissen, wie schwierig es ist, eine neue Programmiersprache vollständig und gründlich zu lernen, und in diesem Fall besteht keine solche Notwendigkeit.
Das einzige, was untersucht werden muss, ist das Ökosystem.
Im Browser müssen wir uns die meiste Zeit mit dem DOM und anderen Web-APIs wie Cookies befassen. Natürlich existieren sie nicht in Node.js. In Node.js fehlen Fenster, Dokumente und andere browserspezifische Objekte.
Auf der anderen Seite fehlen Browsern die großartigen APIs, die Node.js über Module wie den Dateisystemzugriff bereitstellt.
Ein weiterer wichtiger Unterschied besteht darin, dass Sie in Node.js die Code-Laufzeit steuern. Sofern Sie keine Open Source-Anwendung entwickeln, die jeder überall bereitstellen kann, wissen Sie, welche Version von Node.js zum Ausführen der Anwendung verwendet wird. Dies ist im Gegensatz zur Browser-Laufzeit sehr praktisch, da Benutzer entscheiden können, welchen Browser sie verwenden möchten.
Dies bedeutet, dass Sie JavaScript-Code schreiben können, der von Ihrer Version von Node.js unterstützt wird.
Da sich JavaScript sehr dynamisch entwickelt, haben Browser nicht immer Zeit, neue Funktionen der Sprache schnell zu implementieren, und Benutzer aktualisieren nicht immer rechtzeitig. Daher müssen Sie im Web häufig altes JavaScript beibehalten.
Um Code in ES5 zu transpilieren, können Sie Babel verwenden. In Node.js ist dies nicht erforderlich.
Ein weiterer Unterschied besteht darin, dass Node.js das modulare CommonJS-System verwendet, während Browser ES-Module unterstützen.
In der Praxis bedeutet dies, dass wir in Node.js
require()
und im Browser verwenden import
.
Vielen Dank für Ihre Aufmerksamkeit, Freunde. Wenn Sie Fehler und Tippfehler finden, zögern Sie nicht, persönlich zu schreiben, ich werde Ihnen dankbar sein.
Fortsetzung folgt…