Liebe Besucherinnen und Besucher,
aufgrund unseres Sommerfestes sind wir am 03. September 2026 bis 14 Uhr erreichbar. Am 04. September 2026 sind wir wieder wie gewohnt für Sie da. Vielen Dank für Ihr Verständnis.
Ihr Team von Sack Fachmedien
E-Book, Deutsch, 989 Seiten
Reihe: Rheinwerk Computing
Springer Node.js
5. Auflage 2025
ISBN: 978-3-367-11291-3
Verlag: Rheinwerk
Format: EPUB
Kopierschutz: 0 - No protection
Das umfassende Handbuch
E-Book, Deutsch, 989 Seiten
Reihe: Rheinwerk Computing
ISBN: 978-3-367-11291-3
Verlag: Rheinwerk
Format: EPUB
Kopierschutz: 0 - No protection
Meistern Sie Node.js, die führende Plattform für serverseitiges JavaScript ! In diesem umfassenden Handbuch begleitet Sie Sebastian Springer von den ersten Grundlagen bis zu fortgeschrittenen Techniken Schritt für Schritt. Anhand zahlreicher praxisnaher Beispiele lernen Sie, wie Sie robuste und skalierbare Webanwendungen entwickeln . Finden Sie Antworten auf Ihre täglichen Herausforderungen und profitieren Sie von Expertenwissen und bewährten Lösungen . Die fünfte, umfassend aktualisierte und erweiterte Auflage stellt sicher, dass Sie mit den neuesten Entwicklungen arbeiten.
- Professionelle Web-Backends entwickeln
- Installation, Grundlagen, Best Practices
- Debugging, Skalierung, Qualitätssicherung
- Aktuell zu Version 24
Aus dem Inhalt:
- Grundlagen und Installation
- Node.js-Module verwenden
- Node Package Manager (z. B. NPM, Yarn)
- Erfolgreich arbeiten mit Nest.js
- Asynchrone Programmierung
- Anbindung von Datenbanken
- GraphQL nutzen
- Performance, Testing, Qualitätssicherung
- Skalierbarkeit und Deployment
- Deno und Bun kennenlernen
- Node.js und KI
- Verschlüsselung
Autoren/Hrsg.
Weitere Infos & Material
Materialien zum Buch ... 23
Vorwort ... 25
1. Grundlagen ... 29
1.1 ... Die Geschichte von Node.js ... 31
1.2 ... Die Organisation von Node.js ... 36
1.3 ... Versionierung von Node.js ... 37
1.4 ... Stärken von Node.js ... 39
1.5 ... Einsatzgebiete von Node.js ... 40
1.6 ... Die wichtigsten Merkmale von Node.js ... 41
1.7 ... Das Herzstück -- die V8-Engine ... 42
1.8 ... Bibliotheken um die Engine ... 49
1.9 ... Zusammenfassung ... 55
2. Installation ... 57
2.1 ... Node.js-Versionierung ... 58
2.2 ... Installation mit dem Installer ... 60
2.3 ... Installation über den Paketmanager des Systems ... 62
2.4 ... Einsatz eines Version-Managers ... 63
2.5 ... Node.js in einem Container ausführen ... 68
2.6 ... Zusammenfassung ... 77
3. Ein erstes Beispiel ... 79
3.1 ... REPL -- die interaktive Shell von Node.js ... 79
3.2 ... Die erste Applikation ... 88
3.3 ... Debuggen von Node.js-Applikationen ... 99
3.4 ... Entwicklungswerkzeug »nodemon« ... 110
3.5 ... Node.js im Watch-Modus ... 111
3.6 ... Zusammenfassung ... 114
4. Node.js-Module ... 117
4.1 ... Modularer Aufbau ... 117
4.2 ... Kernmodule ... 120
4.3 ... JavaScript-Modulsysteme ... 146
4.4 ... Eigene Module erzeugen und verwenden ... 151
4.5 ... Module dynamisch laden ... 164
4.6 ... Zusammenfassung ... 165
5. HTTP ... 167
5.1 ... Das HTTP-Protokoll ... 167
5.2 ... Der Webserver ... 168
5.3 ... Node.js als HTTP-Client ... 203
5.4 ... Sichere Kommunikation mit HTTPS ... 211
5.5 ... HTTP/2 ... 213
5.6 ... Zusammenfassung ... 224
6. Express ... 227
6.1 ... Aufbau ... 227
6.2 ... Installation ... 229
6.3 ... Grundlagen ... 230
6.4 ... Architektur einer Express-Applikation ... 234
6.5 ... Filmdatenbank ... 237
6.6 ... Middleware ... 247
6.7 ... Dynamische Routen -- Löschen von Datensätzen ... 254
6.8 ... Anlegen und Bearbeiten von Datensätzen -- Zugriff auf den Request-Body ... 257
6.9 ... Validierung von Eingaben mit Zod ... 265
6.10 ... Express 5 ... 269
6.11 ... HTTPS und HTTP/2 ... 271
6.12 ... Zusammenfassung ... 273
7. Template-Engines ... 277
7.1 ... Template-Engines in der Praxis -- Pug ... 278
7.2 ... Handlebars ... 294
7.3 ... Zusammenfassung und Ausblick ... 299
8. Anbindung von Datenbanken ... 301
8.1 ... Node.js und relationale Datenbanken ... 302
8.2 ... Node.js und nicht relationale Datenbanken ... 326
8.3 ... Zusammenfassung ... 342
9. Authentifizierung und Sessionhandling ... 345
9.1 ... Passport ... 345
9.2 ... Setup und Konfiguration ... 346
9.3 ... Anmeldung an der Applikation ... 350
9.4 ... Zugriff auf Ressourcen ... 360
9.5 ... Externer Identity Provider ... 372
9.6 ... Zusammenfassung ... 378
10. REST-Server ... 381
10.1 ... REST -- eine kurze Einführung und wie es in Webapplikationen verwendet wird ... 381
10.2 ... Zugriff auf die Applikation ... 382
10.3 ... Anpassungen an der Applikationsstruktur ... 384
10.4 ... Lesende Anfragen ... 385
10.5 ... Schreibende Anfragen ... 396
10.6 ... Authentifizierung mit JSON Web Tokens ... 407
10.7 ... Einbindung eines externen Identity Providers ... 415
10.8 ... OpenAPI-Spezifikation -- Dokumentation mit Swagger ... 419
10.9 ... Validierung ... 424
10.10 ... Zusammenfassung ... 430
11. GraphQL ... 433
11.1 ... GraphQL-Bibliotheken ... 434
11.2 ... Integration in Express ... 435
11.3 ... Daten über die Schnittstelle auslesen ... 440
11.4 ... Schreibende Zugriffe auf die GraphQL-Schnittstelle ... 446
11.5 ... Mit Subscriptions Updates in Echtzeit erhalten ... 453
11.6 ... Authentifizierung für die GraphQL-Schnittstelle ... 457
11.7 ... Zusammenfassung ... 462
12. Echtzeit-Webapplikationen ... 465
12.1 ... Die Beispielapplikation ... 466
12.2 ... Setup ... 466
12.3 ... WebSockets ... 473
12.4 ... Node.js als WebSocket-Client ... 487
12.5 ... Socket.IO ... 488
12.6 ... Zusammenfassung ... 494
13. Typsichere Applikationen in Node.js ... 497
13.1 ... Typsysteme für Node.js ... 498
13.2 ... Werkzeuge und Konfiguration ... 501
13.3 ... TypeScript-Grundlagen ... 506
13.4 ... Klassen ... 512
13.5 ... Interfaces ... 515
13.6 ... Type Aliases in TypeScript ... 517
13.7 ... Generics ... 519
13.8 ... TypeScript im Einsatz in einer Node.js-Applikation ... 520
13.9 ... Native TypeScript-Unterstützung in Node.js ... 523
13.10 ... Zusammenfassung ... 525
14. Webapplikationen mit Nest ... 527
14.1 ... Installation und erste Schritte mit Nest ... 528
14.2 ... Die Nest CLI ... 530
14.3 ... Struktur der Applikation ... 534
14.4 ... Module -- logische Einheiten im Quellcode ... 536
14.5 ... Controller -- die Endpunkte einer Applikation ... 539
14.6 ... Providers -- die Businesslogik der Applikation ... 543
14.7 ... Validierung ... 548
14.8 ... Zugriff auf Datenbanken ... 551
14.9 ... Dokumentation der Endpunkte mit OpenAPI ... 559
14.10 ... Authentifizierung ... 563
14.11 ... Ausblick: Testen in Nest ... 571
14.12 ... Zusammenfassung ... 574
15. Node für Kommandozeilenwerkzeuge ... 577
15.1 ... Grundlagen ... 577
15.2 ... Der Aufbau einer Kommandozeilenapplikation ... 580
15.3 ... Zugriff auf Ein- und Ausgabe ... 585
15.4 ... Werkzeuge ... 594
15.5 ... Signale ... 605
15.6 ... Exit Codes ... 608
15.7 ... Zusammenfassung ... 609
16. Asynchrone Programmierung ... 611
16.1 ... Externe Kommandos mit dem »child-process«-Modul asynchron ausführen ... 611
16.2 ... Node.js-Kindprozesse erzeugen mit »fork« ... 620
16.3 ... Das »cluster«-Modul ... 626
16.4 ... Worker-Threads ... 635
16.5 ... Zusammenfassung ... 640
17. Streams ... 643
17.1 ... Einleitung ... 643
17.2 ... Readable Streams ... 647
17.3 ... Writable Streams ... 660
17.4 ... Duplex-Streams ... 668
17.5 ... Transform-Streams ... 672
17.6 ... Web Streams API ... 674
17.7 ... Zusammenfassung ... 683
18. Arbeiten mit Dateien ... 685
18.1 ... Synchrone und asynchrone Funktionen ... 685
18.2 ... Existenz von Dateien ... 687
18.3 ... Dateien lesen ... 688
18.4 ... Fehlerbehandlung ... 693
18.5 ... In Dateien schreiben ... 695
18.6 ... Verzeichnisoperationen ... 699
18.7 ... Weiterführende Operationen ... 702
18.8 ... Zusammenfassung ... 710
19. Paketmanager ... 713
19.1 ... Die häufigsten Operationen ... 714
19.2 ... Weiterführende Operationen ... 733
19.3 ... Werkzeuge für NPM ... 744
19.4 ... Corepack ... 748
19.5 ... Yarn ... 749
19.6 ... pnpm ... 750
19.7 ... Zusammenfassung ... 751
20. Qualitätssicherung ... 753
20.1 ... Styleguides ... 754
20.2 ... Linter ... 756
20.3 ... Prettier ... 762
20.4 ... PMD CPD ... 763
20.5 ... Husky ... 766
20.6 ... Zusammenfassung ... 767
21. Testing ... 769
21.1 ... Unittesting ... 769
21.2 ... Assertion Testing ... 772
21.3 ... Der Node Test Runner ... 778
21.4 ... Vitest ... 781
21.5 ... Praktisches Beispiel von Unittests mit »Vitest« ... 792
21.6 ... Umgang mit Abhängigkeiten -- Mocking ... 799
21.7 ... Zusammenfassung ... 802
22. Sicherheitsaspekte ... 803
22.1 ... »filter input« und »escape output« ... 804
22.2 ... Absicherung des Servers ... 807
22.3 ... NPM-Sicherheit ... 829
22.4 ... Schutz des Clients ... 833
22.5 ... Das Node.js Permission System ... 838
22.6 ... Zusammenfassung ... 840
23. Skalierbarkeit und Deployment ... 843
23.1 ... Vorbereitung für die Produktion ... 843
23.2 ... Deployment-Grundlagen und -Strategien ... 849
23.3 ... Die Anwendung am Laufen halten und überwachen ... 860
23.4 ... Skalierung ... 864
23.5 ... Zusammenfassung ... 872
24. Performance ... 873
24.1 ... YAGNI -- You Ain't Gonna Need It ... 873
24.2 ... CPU ... 874
24.3 ... Zeitmessung in Node.js ... 877
24.4 ... Arbeitsspeicher ... 882
24.5 ... Netzwerk ... 889
24.6 ... Zusammenfassung ... 893
25. JavaScript Runtimes ... 895
25.1 ... Deno ... 895
25.2 ... Bun ... 916
25.3 ... Zusammenfassung ... 925
26. Künstliche Intelligenz mit Node.js nutzen ... 927
26.1 ... Überblick über Generative AI ... 927
26.2 ... LLMs nutzen ... 931
26.3 ... Ein Chatbot auf der Kommandozeile ... 939
26.4 ... Multimodale LLMs ... 942
26.5 ... Modulare Applikationen mit LangChain ... 944
26.6 ... Das Model Context Protocol ... 953
26.7 ... Zusammenfassung ... 964
Index ... 965
Vorwort
Node.js begleitet mich mittlerweile seit vielen Jahren als serverseitige Entwicklungsplattform und auch in Form dieses Buchs, das Sie nun schon in der fünften Auflage in Händen halten. Im Laufe der Zeit hat sich die JavaScript-Welt, aber auch Node.js selbst stark gewandelt. Node.js ist mittlerweile erwachsen geworden und gehört zum Mainstream. Im Gegensatz zu den Anfangszeiten, in denen Sie Geldgeber, Entscheider, aber auch Kollegen vom Einsatz von Node.js überzeugen mussten, ist es inzwischen deutlich leichter geworden. Teilweise ist Node.js in Projekten sogar schon als Basisplattform gesetzt. Ein Aspekt, der entscheidend zu dieser Erfolgsgeschichte beigetragen hat, ist die Flexibilität der Plattform. Sie können Node.js in kleinen Kommandozeilenwerkzeugen, für den Bau von schnellen Prototypen sowie auch für umfangreiche Serverapplikationen im Unternehmenskontext verwenden. Dieses Buch soll Sie auf Ihrer Reise in die Welt von Node.js begleiten, Ihnen den Einstieg in die Entwicklung von Applikationen auf Basis von Node.js erleichtern und Ihnen auch als Nachschlagewerk in der täglichen Arbeit dienen.
In diesem Buch lernen Sie die Grundlagen von Node.js kennen, erfahren mehr über den Aufbau der Plattform und arbeiten mit den verschiedenen Schnittstellen, die Ihnen Node.js zur Verfügung stellt.
Beachten Sie, dass Sie für die Arbeit mit diesem Buch über ein solides Grundwissen in JavaScript verfügen sollten. Zwar gehe ich im Verlauf dieses Buchs auf einige Sprachfeatures wie beispielsweise Destructuring, Promises und das Modulsystem ein, der Schwerpunkt liegt jedoch auf dem Thema Node.js, und so sollten Sie einen Blick in das Mozilla Developer Network (https://developer.mozilla.org/de/) werfen, in dem sämtliche Aspekte von JavaScript umfassend erklärt werden. Außerdem möchte ich Ihnen an dieser Stelle das JavaScript-Handbuch von Philip Ackermann ans Herz legen, das vor Kurzem ebenfalls umfassend überarbeitet und aktualisiert wurde.
Serverseitiges JavaScript mit Node.js unterscheidet sich in einigen Aspekten von der Entwicklung von clientseitigen Applikationen mit HTML, CSS und JavaScript. So haben Sie in der Regel keine direkte visuelle Rückmeldung, wie Sie es sonst im Browser gewohnt sind. Auch die Architektur- und Designpatterns, die Sie serverseitig einsetzen, unterscheiden sich teilweise von denen auf der Clientseite. Andere Muster und Paradigmen gleichen sich auf beiden Seiten. So arbeitet Node.js an vielen Stellen, ähnlich wie der Browser, eventgetrieben. Das bedeutet, dass Sie viel mit asynchronen Operationen zu tun haben. Das ist notwendig, da Ihre Applikation in Node.js in der Regel in einem einzigen Prozess ausgeführt wird und es hier leicht zu Performanceengpässen kommen kann, falls sich verschiedene Operationen gegenseitig blockieren.
Node.js nutzt mit der V8-Engine die gleiche JavaScript-Engine wie der Chrome-Browser. Da das Entwicklerteam von Node.js die Engine stets auf einem aktuellen Stand hält, können Sie mit Node.js modernes JavaScript entwickeln und auch auf die neuesten Sprachfeatures zurückgreifen. Neben der Engine stellt Ihnen Node.js eine umfangreiche Sammlung von Kernmodulen zur Verfügung, mit denen Sie auf einer relativ systemnahen Ebene Ihre Problemstellungen lösen können. In der Regel werden Sie jedoch auf externe Pakete zurückgreifen, da es für die meisten Probleme bereits etablierte Lösungen gibt, die Sie lediglich für Ihre Applikation adaptieren müssen. Eine herausragende Stellung nimmt dabei das Modulsystem von Node.js ein. Hier hat sich in den letzten Jahren einiges getan, und die Plattform ist in der Adaption des ECMAScript-Modulsystems einen großen Schritt vorangekommen. Im Verlauf dieses Buchs erfahren Sie mehr zu den verschiedenen Schichten des Modulsystems und wie Sie es nutzen können, um Ihre Applikation aufzubauen.
Wie schon erwähnt, begleitet mich Node.js mittlerweile schon ein paar Jahre in meiner Entwicklertätigkeit. Begonnen habe ich mit der Webentwicklung unter PHP. Und wie die meisten Webentwickler konnte auch ich mich dem Einfluss von JavaScript nicht entziehen. Neben dem Aspekt der Umsetzung von Applikationslogik im Frontend habe ich mich im Bereich JavaScript vor allem auch mit der Qualitätssicherung beschäftigt. Die Node.js-Plattform und damit die Möglichkeit, JavaScript auch auf dem Server einzusetzen, weckte recht früh mein Interesse. Mir stellte sich, wie so vielen anderen Entwicklern auch, die Frage: Kann man Node.js bereits in Applikationen produktiv nutzen? Der Antwort auf diese Frage näherte ich mich in der Vergangenheit schrittweise an. Zu Beginn standen Implementierungen verschiedener Beispielapplikationen in Node.js und das Austesten des Toolsets, das für Node.js zur Verfügung steht, im Vordergrund. Die Anforderungen an die Werkzeuge für Node.js reichen von der Verfügbarkeit einer Entwicklungsumgebung über Werkzeuge wie Debugger bis hin zu Plattformen für Continuous Integration. In einem ersten Projekt kam Node.js bei mir im Verbund mit anderen Programmiersprachen zum Einsatz. Node.js übernahm in diesem Fall die Realtime-Kommunikation. Nachdem sich über einen längeren Zeitraum gezeigt hatte, dass Node.js in einem solchen Umfeld stabil eingesetzt werden kann, stand einer weiteren Verwendung auch in anderen Projekten nichts mehr im Wege. Und so setze ich Node.js mittlerweile bei einer ganzen Reihe von Projekten ein.
Für die fünfte Auflage dieses Buchs habe ich den Inhalt umfassend überarbeitet, um den aktuellen Entwicklungen rund um Node.js Rechnung zu tragen. Inzwischen haben sich neue Bibliotheken etabliert, und Node.js hat zahlreiche neue Features erhalten – sowohl in Form von Sprachfunktionen aus JavaScript als auch durch zusätzliche Module. Der Quellcode spiegelt diese Fortschritte wider, ist dadurch moderner, praxisnäher und verdeutlicht, wie vielseitig Node.js eingesetzt werden kann. Lassen Sie sich jedoch von den neuen Features und der Vielzahl von Paketen nicht abschrecken. Bei der Arbeit mit JavaScript ist es wichtig, dass Sie sich mit den Patterns und Architekturen beschäftigen, sodass Sie neue Paradigmen und Pakete bewerten und mit überschaubarem Einarbeitungsaufwand einsetzen können. Viele der Patterns und Best Practices, mit denen Sie aktuell arbeiten, gelten in ähnlicher Form schon seit den ersten Versionen von Node.js. Bei der Arbeit mit Node.js ist das Verständnis des Kerns der Plattform unerlässlich, und dieses erwerben Sie am besten, indem Sie viel mit der Plattform experimentieren. Ich lade Sie dazu ein, im Zuge dieses Buchs die Beispiele selbst nachzuvollziehen, diese auch selbst zu erweitern und verschiedene Wege auszuprobieren. In diesem Buch finden Sie sowohl umfangreiche zusammenhängende Beispiele, etwa in Kapitel 6 bis Kapitel 10, in denen Sie eine Webapplikation auf Basis von Express implementieren, als auch kleine, in sich geschlossene Beispiele wie im Kapitel 15 zum Einsatz auf der Kommandozeile.
Aufbau des Buchs
Dieses Buch gliedert sich grob in vier Bereiche, deren Kapitel thematisch zusammenhängen.
Der erste Teil des Buchs befasst sich mit den Grundlagen von Node.js und der generellen Strukturierung von Applikationen auf Basis von Node.js. Hier werfen wir einen Blick auf die Entwicklungsgeschichte der Plattform und die Installation. Außerdem erhalten Sie eine praktische Einführung in das Modulsystem.
Node.js ist primär eine Plattform für die Webentwicklung. Und genau diesem Thema widmet sich der zweite Teil dieses Buchs. Hier lernen Sie, wie Sie einen sicheren Webserver umsetzen und auch umfangreiche Webapplikationen mit zahlreichen Komponenten und Modulen programmieren können. Eine Hilfestellung bieten Ihnen zahlreiche Frameworks wie beispielsweise Express.js oder Bibliotheken und Template-Engines wie Pug. Auch die Anbindung verschiedener Datenbanken darf an dieser Stelle nicht fehlen. Hier haben Sie mit Node.js eine flexible und vielseitige Plattform als Grundlage für Ihre Applikation. Gerade die Kombination vieler kleiner spezialisierter Einzelteile macht die Stärke einer Node.js-Applikation aus. Sie lernen verschiedene Aspekte der Webentwicklung samt Umsetzung mit Node.js anhand praktischer Beispiele kennen und entwickeln verschiedene Arten von Webapplikationen. Sie lernen außerdem mit GraphQL eine Alternative zu den weitverbreiteten REST-Schnittstellen kennen. Mit Nest stelle ich Ihnen ein weiteres Framework für Webbackends vor, das noch deutlich mehr Wert auf Struktur und Architektur legt, als dies bei Express der Fall ist.
JavaScript und Asynchronität gehen Hand in Hand. Der dritte Teil des Buchs beschäftigt sich mit verschiedenen Lösungsansätzen zur asynchronen Programmierung. Sie erfahren sowohl, wie Sie Kindprozessen umgehen, als auch, wie Sie Datenströme in der Entwicklung einsetzen können.
Der letzte Teil des Buchs beschäftigt sich mit Problemstellungen jenseits der reinen Programmierung und soll Ihnen als Entwickler wichtige Hinweise zum Umgang mit Node.js im Alltag geben. Dies betrifft Themen, die direkt im Zuge der Entwicklung stattfinden, wie beispielsweise den Umgang mit Paketmanagern, die Qualitätssicherung von Applikationen durch die Implementierung von Tests, aber auch Codeanalyse und Debugging. Ein weiteres sehr wichtiges Thema ist die Sicherheit von Applikationen. In einem eigenen Kapitel erfahren Sie mehr über Angriffsmöglichkeiten und wie Sie diesen begegnen können, um sich und die Benutzer Ihrer Applikation zu schützen. Die folgenden Kapitel widmen sich dem Deployment und der Skalierbarkeit von Node.js-Applikationen, Sie...




