Springer | Node.js | Buch | 978-3-367-10834-3 | www.sack.de

Buch, Deutsch, 989 Seiten, Format (B × H): 168 mm x 240 mm

Reihe: Rheinwerk Computing

Springer

Node.js

Das umfassende Handbuch. Serverseitige Web-Applikationen mit JavaScript entwickeln. Aktuell zu Version 24
5. Auflage 2025
ISBN: 978-3-367-10834-3
Verlag: Rheinwerk Verlag GmbH

Das umfassende Handbuch. Serverseitige Web-Applikationen mit JavaScript entwickeln. Aktuell zu Version 24

Buch, Deutsch, 989 Seiten, Format (B × H): 168 mm x 240 mm

Reihe: Rheinwerk Computing

ISBN: 978-3-367-10834-3
Verlag: Rheinwerk Verlag GmbH


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.

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

Die Fachpresse zur Vorauflage:

regetskcob.blog: 'Ob zur Weiterbildung oder als Nachschlagewerk, dieses Buch gehört in das Bücherregal eines jeden Webentwicklers, oder jeder Webentwicklerin. Mit dem Wissen aus diesem Werk ist ein Application-Server mit Datenbankanbindung und ReST API im Nu erstellt.'

Springer Node.js jetzt bestellen!

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


Springer, Sebastian
Sebastian Springer ist JavaScript-Engineer bei MaibornWolff. Als Dozent lehrt er JavaScript an der Technischen Hochschule Rosenheim. Er publiziert regelmäßig in Fachzeitschriften, schreibt Fachbücher zu Node.js und ist ein gefragter Speaker auf allen wichtigen JavaScript- und Webentwickler-Konferenzen. Sebastian Springer bietet auch Seminare zu JavaScript und Node.js an und ist Trainer für mehrere Rheinwerk Webinare.



Ihre Fragen, Wünsche oder Anmerkungen
Vorname*
Nachname*
Ihre E-Mail-Adresse*
Kundennr.
Ihre Nachricht*
Lediglich mit * gekennzeichnete Felder sind Pflichtfelder.
Wenn Sie die im Kontaktformular eingegebenen Daten durch Klick auf den nachfolgenden Button übersenden, erklären Sie sich damit einverstanden, dass wir Ihr Angaben für die Beantwortung Ihrer Anfrage verwenden. Selbstverständlich werden Ihre Daten vertraulich behandelt und nicht an Dritte weitergegeben. Sie können der Verwendung Ihrer Daten jederzeit widersprechen. Das Datenhandling bei Sack Fachmedien erklären wir Ihnen in unserer Datenschutzerklärung.