Skip to content

Einführung in Node.js

Node.js ist eine Open-Source- und plattformübergreifende JavaScript-Laufzeitumgebung. Es ist ein beliebtes Werkzeug für fast jede Art von Projekt!

Node.js führt die V8-JavaScript-Engine, den Kern von Google Chrome, außerhalb des Browsers aus. Dadurch ist Node.js sehr leistungsfähig.

Eine Node.js-Anwendung läuft in einem einzigen Prozess, ohne für jede Anfrage einen neuen Thread zu erstellen. Node.js stellt eine Reihe von asynchronen I/O-Primitiven in seiner Standardbibliothek bereit, die verhindern, dass JavaScript-Code blockiert, und im Allgemeinen werden Bibliotheken in Node.js unter Verwendung von nicht-blockierenden Paradigmen geschrieben, wodurch blockierendes Verhalten eher die Ausnahme als die Regel ist.

Wenn Node.js eine I/O-Operation ausführt, wie das Lesen aus dem Netzwerk, den Zugriff auf eine Datenbank oder das Dateisystem, anstatt den Thread zu blockieren und CPU-Zyklen mit dem Warten zu verschwenden, setzt Node.js die Operationen fort, wenn die Antwort zurückkommt.

Dadurch kann Node.js Tausende von gleichzeitigen Verbindungen mit einem einzigen Server verarbeiten, ohne die Belastung durch die Verwaltung der Thread-Konkurrenz einzuführen, die eine bedeutende Fehlerquelle sein könnte.

Node.js hat einen einzigartigen Vorteil, da Millionen von Frontend-Entwicklern, die JavaScript für den Browser schreiben, nun in der Lage sind, zusätzlich zum clientseitigen Code auch den serverseitigen Code zu schreiben, ohne eine völlig andere Sprache lernen zu müssen.

In Node.js können die neuen ECMAScript-Standards problemlos verwendet werden, da Sie nicht warten müssen, bis alle Ihre Benutzer ihre Browser aktualisieren - Sie sind dafür verantwortlich, welche ECMAScript-Version verwendet werden soll, indem Sie die Node.js-Version ändern, und Sie können auch bestimmte experimentelle Funktionen aktivieren, indem Sie Node.js mit Flags ausführen.

Eine Beispiel-Node.js-Anwendung

Das häufigste Hello World-Beispiel von Node.js ist ein Webserver:

js
import { createServer } from 'node:http'
const hostname = '127.0.0.1'
const port = 3000
const server = createServer((req, res) => {
  res.statusCode = 200
  res.setHeader('Content-Type', 'text/plain')
  res.end('Hello World')
})
server.listen(port, hostname, () => {
  console.log(`Server läuft unter http://${hostname}:${port}/`)
})

Um dieses Snippet auszuführen, speichern Sie es als server.js-Datei und führen Sie node server.js in Ihrem Terminal aus. Wenn Sie die mjs-Version des Codes verwenden, sollten Sie sie als server.mjs-Datei speichern und node server.mjs in Ihrem Terminal ausführen.

Dieser Code enthält zunächst das Node.js http-Modul.

Node.js verfügt über eine fantastische Standardbibliothek, einschließlich erstklassiger Unterstützung für die Vernetzung.

Die Methode createServer() von http erstellt einen neuen HTTP-Server und gibt ihn zurück.

Der Server wird so eingestellt, dass er auf dem angegebenen Port und Hostnamen lauscht. Wenn der Server bereit ist, wird die Callback-Funktion aufgerufen, in diesem Fall wird uns mitgeteilt, dass der Server läuft.

Immer wenn eine neue Anfrage empfangen wird, wird das request-Ereignis aufgerufen und stellt zwei Objekte bereit: eine Anfrage (ein http.IncomingMessage-Objekt) und eine Antwort (ein http.ServerResponse-Objekt).

Diese beiden Objekte sind unerlässlich, um den HTTP-Aufruf zu verarbeiten.

Das erste liefert die Details der Anfrage. In diesem einfachen Beispiel wird dies nicht verwendet, aber Sie könnten auf die Anfrage-Header und Anfrage-Daten zugreifen.

Das zweite wird verwendet, um Daten an den Aufrufer zurückzugeben.

In diesem Fall mit:

js
res.setHeader('Content-Type', 'text/plain')

setzen wir die Eigenschaft statusCode auf 200, um eine erfolgreiche Antwort anzuzeigen.

Wir setzen den Content-Type-Header:

js
res.setHeader('Content-Type', 'text/plain')

und wir schließen die Antwort, indem wir den Inhalt als Argument an end() hinzufügen:

js
res.end('Hello World')

Dies sendet die Antwort an den Client.