Node.js ist eine Runtime, die JavaScript außerhalb des Browsers ausführt: auf einem Server, in einem Terminal oder als Kommandozeilen-Tool. Es ist keine Programmiersprache (die Sprache ist JavaScript) und kein Framework (Express ist ein Framework, das auf Node.js läuft). Es kombiniert die V8-Engine von Google, die JavaScript ausführt, mit einer Event Loop und eingebauten APIs für Dateien, Netzwerk und Prozesse, die Browser nicht haben.
Es hat den Inhalt der Datei ausgegeben, die Major-Version (v24) und undefined für window, weil Node.js keine Webseite hat, die dir eins geben könnte. fs und process gibt es nur in Node.js; führ dieselben Zeilen in einem Browser-Tab aus, und schon die erste wirft einen Fehler.
Ist Node.js ein Framework oder eine Sprache?
Weder noch. JavaScript ist die Sprache. Node.js ist das Programm, das sie ausführt, so wie die JVM Java oder CPython Python ausführt. Frameworks sitzen obendrauf: Express, Fastify und NestJS sind Bibliotheken, die du in ein Node.js-Projekt installierst. Die Seite Node.js vs. JavaScript vergleicht die beiden im Detail.
Unter der Haube besteht Node.js aus vier Teilen:
- V8, die JavaScript-Engine aus Chrome. Sie macht aus deinem Code Maschinencode und führt ihn aus.
- libuv, eine C-Bibliothek, die die Event Loop bereitstellt und langsame Arbeit (Festplatte, Netzwerk, Timer) im Hintergrund erledigt und das Ergebnis dann an deine Callbacks zurückgibt.
- Die eigenen APIs von Node:
fsfür Dateien,httpfür Server,path,process,crypto,eventsund mehr, verfügbar mitrequireoderimportund ohne Installation. - npm, der Paketmanager, der mit Node.js kommt und dir Zugang zur größten Paket-Registry aller Sprachen gibt.
Eine Node.js-Datei ausführen
Installier Node.js von der Website (nimm die LTS-Version), prüf es dann in einem Terminal und führ eine Datei aus:
node --version # prints v24.x.x or similar
node app.js # runs app.js and exits when it has nothing left to do
node # with no file: an interactive prompt (the REPL)
Ein Programm endet von selbst, sobald nichts mehr wartet: kein Timer, kein offener Server, kein ausstehendes Lesen einer Datei. Deshalb beendet sich ein Skript, während ein Webserver weiterläuft.
Nicht blockierendes I/O, die Kernidee
Node.js wartet nicht auf langsame Arbeit. Es startet das Lesen einer Datei oder eine Netzwerkanfrage, führt die nächsten Zeilen weiter aus und ruft deine Funktion auf, wenn das Ergebnis bereit ist.
Die beiden console.log-Zeilen nach readFile liefen zuerst, und der Inhalt der Datei kam zuletzt. So bedient ein einziger Node.js-Prozess Tausende Verbindungen: Während eine Anfrage auf die Datenbank wartet, hält die Event Loop die anderen in Bewegung.
Node.js vs. der Browser
| Browser | Node.js | |
|---|---|---|
| Läuft | In einer Webseite | In einem Terminal oder auf einem Server |
| Hat | window, document, das DOM, localStorage | fs, process, http, Buffer, require |
| Globales Objekt | window (und globalThis) | global (und globalThis) |
| Dateien auf der Festplatte | Kein Zugriff | Voller Zugriff, mit den Rechten deines Benutzers |
setTimeout, console, fetch, URL | Ja | Ja |
Wofür Node.js genutzt wird
- Webserver und APIs: REST- und GraphQL-Backends, oft mit Express.
- Echtzeit-Apps: Chat, Live-Dashboards und Multiplayer-Spiele über WebSockets, bei denen viele Verbindungen gleichzeitig offen bleiben.
- Kommandozeilen-Tools: npm selbst, Vite, ESLint, Prettier und der Compiler von TypeScript laufen alle auf Node.js.
- Skripte und Automatisierung: Dateien umbenennen, APIs aufrufen, Daten migrieren.
Der häufigste Einsatz ist ein HTTP-Server, und für einen ersten reicht das eingebaute Modul http:
Der Server hat GET /hello mit dem Pfad beantwortet, den er bekommen hat. Ändere den Pfad in der Request-Leiste in /anything und sende ihn: Die Antwort zieht mit, weil dieser Server jede URL mit einer einzigen Funktion behandelt.
Wann du Node.js wählst
Wähl Node.js, wenn die Arbeit hauptsächlich aus Warten auf I/O besteht (Anfragen, Datenbanken, Dateien) und du eine Sprache für Frontend und Backend willst. Weniger gut passt es für lange, CPU-lastige Berechnungen wie Video-Encoding oder große numerische Aufgaben, weil eine lange Berechnung den einzigen JavaScript-Thread blockiert und jede andere Anfrage darauf wartet.
Häufig gestellte Fragen
Ist Node.js Frontend oder Backend?
Meistens Backend. Node.js läuft auf einem Server oder deinem eigenen Rechner, nicht im Browser des Besuchers. Frontend-Entwickler nutzen es trotzdem jeden Tag, weil Tools wie npm, Vite und ESLint Node.js-Programme sind.
Wer hat Node.js entwickelt und wann?
Ryan Dahl hat Node.js 2009 veröffentlicht. Heute pflegt es die OpenJS Foundation, mit einer neuen Major-Version alle sechs Monate, wobei gerade Versionsnummern Long-Term Support bekommen.
Muss ich JavaScript können, bevor ich Node.js lerne?
Ja, zumindest die Grundlagen: Variablen, Funktionen, Objekte, Arrays und Callbacks oder Promises. Node.js fügt APIs hinzu, keine neue Syntax, alles, was du über die Sprache lernst, gilt also direkt.
Ist Node.js single-threaded?
Dein JavaScript läuft in einem Thread. Node.js nutzt im Hintergrund einen kleinen Thread-Pool für Dateisystem-Arbeit, DNS und einen Teil von crypto, damit langsames I/O deinen Code nicht blockiert, während es wartet.