Beschreibung
Bühne frei für Node.js! Dieses Buch ist Ihr umfassender Begleiter für die Arbeit mit der am weitesten verbreiteten und von zahlreichen großen Unternehmen eingesetzten serverseitigen JavaScript-Plattform. An leicht verständlichen Beispielen lernen Sie alle Aspekte von Node.js kennen - von den Grundlagen bis zum Profi-Wissen! Hier finden Sie zahlreiche Tipps und Lösungen zu alltäglichen Problemen in der Webentwicklung. Für die vierte Auflage wurde das Buch umfassend aktualisiert und erweitert. Aus dem Inhalt: Grundlagen und InstallationNode.js Module verwendenNode Package Manager (z. B. NPM, Yarn)Erfolgreich arbeiten mit Nest.jsAsynchrone ProgrammierungAnbindung von DatenbankenGraphQL nutzenPerformance, Testing, QualitätssicherungSkalierbarkeit und DeploymentMicroservices mit Node.jsDeno kennen lernen
Autorenportrait
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.
Inhalt
1.1 ... Die Geschichte von Node.js ... 33
1.2 ... Die Organisation von Node.js ... 38
1.3 ... Versionierung von Node.js ... 39
1.4 ... Vorteile von Node.js ... 41
1.5 ... Einsatzgebiete von Node.js ... 42
1.6 ... Das Herzstück -- die V8-Engine ... 43
1.7 ... Bibliotheken um die Engine ... 50
1.8 ... Zusammenfassung ... 57
2.1 ... Installation von Paketen ... 60
2.2 ... Kompilieren und installieren ... 74
2.3 ... Node Version Manager ... 76
2.4 ... Node und Docker ... 77
2.5 ... Zusammenfassung ... 78
3.1 ... Der interaktive Modus ... 79
3.2 ... Die erste Applikation ... 86
3.3 ... Debuggen von Node.js-Applikationen ... 96
3.4 ... Entwicklungswerkzeug »nodemon« ... 107
3.5 ... Zusammenfassung ... 108
4.1 ... Modularer Aufbau ... 109
4.2 ... Kernmodule ... 112
4.3 ... JavaScript-Modulsysteme ... 132
4.4 ... Eigene Module erzeugen und verwenden ... 135
4.5 ... Zusammenfassung ... 148
5.1 ... Der Webserver ... 149
5.2 ... Node.js als HTTP-Client ... 178
5.3 ... Sichere Kommunikation mit HTTPS ... 182
5.4 ... HTTP/2 ... 184
5.5 ... Zusammenfassung ... 189
6.1 ... Aufbau ... 191
6.2 ... Installation ... 192
6.3 ... Grundlagen ... 194
6.4 ... Setup ... 196
6.5 ... Movie-Datenbank ... 199
6.6 ... Middleware ... 209
6.7 ... Erweitertes Routing -- Löschen von Datensätzen ... 214
6.8 ... Anlegen und Bearbeiten von Datensätzen -- Body-Parser ... 217
6.9 ... Express 5 ... 224
6.10 ... HTTPS und HTTP/2 ... 225
6.11 ... Zusammenfassung ... 228
7.1 ... Eine eigene Template-Engine ... 230
7.2 ... Template-Engines in der Praxis -- Pug ... 232
7.3 ... Handlebars ... 247
7.4 ... Zusammenfassung und Ausblick ... 257
8.1 ... Node.js und relationale Datenbanken ... 260
8.2 ... Node.js und nicht relationale Datenbanken ... 280
8.3 ... Zusammenfassung ... 293
9.1 ... Passport ... 295
9.2 ... Setup und Konfiguration ... 296
9.3 ... Anmeldung an der Applikation ... 300
9.4 ... Zugriff auf Ressourcen ... 308
9.5 ... Zusammenfassung ... 317
10.1 ... REST -- eine kurze Einführung und wie es in Webapplikationen verwendet wird ... 319
10.2 ... Zugriff auf die Applikation ... 320
10.3 ... Anpassungen an der Applikationsstruktur ... 322
10.4 ... Lesende Anfragen ... 323
10.5 ... Schreibende Anfragen ... 334
10.6 ... Authentifizierung mit JSON Web Tokens ... 342
10.7 ... OpenAPI-Spezifikation -- Dokumentation mit Swagger ... 351
10.8 ... Validierung ... 355
10.9 ... Zusammenfassung ... 362
11.1 ... GraphQL-Bibliotheken ... 364
11.2 ... Integration in Express ... 365
11.3 ... Daten über die Schnittstelle auslesen ... 369
11.4 ... Schreibende Zugriffe auf die GraphQL-Schnittstelle ... 374
11.5 ... Authentifizierung für die GraphQL-Schnittstelle ... 380
11.6 ... Zusammenfassung ... 382
12.1 ... Die Beispielapplikation ... 384
12.2 ... Setup ... 385
12.3 ... Websockets ... 391
12.4 ... Socket.IO ... 404
12.5 ... Zusammenfassung ... 410
13.1 ... Typsysteme für Node.js ... 412
13.2 ... Werkzeuge und Konfiguration ... 419
13.3 ... Grundlagen ... 425
13.4 ... Klassen ... 430
13.5 ... Interfaces ... 433
13.6 ... Type Aliases in TypeScript ... 435
13.7 ... Generics ... 436
13.8 ... TypeScript im Einsatz in einer Node.js-Applikation ... 438
13.9 ... Zusammenfassung ... 440
14.1 ... Installation und erste Schritte mit Nest ... 442
14.2 ... Die Nest CLI ... 444
14.3 ... Struktur der Applikation ... 448
14.4 ... Module -- logische Einheiten im Quellcode ... 450
14.5 ... Controller -- die Endpunkte einer Applikation ... 453
14.6 ... Providers -- die Businesslogik der Applikation ... 458
14.7 ... Zugriff auf Datenbanken ... 462
14.8 ... Dokumentation der Endpunkte mit OpenAPI ... 470
14.9 ... Authentifizierung ... 473
14.10 ... Ausblick: Testen in Nest ... 480
14.11 ... Zusammenfassung ... 483
15.1 ... Grundlagen ... 485
15.2 ... Der Aufbau einer Kommandozeilenapplikation ... 488
15.3 ... Zugriff auf Ein- und Ausgabe ... 493
15.4 ... Werkzeuge ... 503
15.5 ... Signale ... 510
15.6 ... Exit Codes ... 513
15.7 ... Zusammenfassung ... 514
16.1 ... Grundlagen asynchroner Programmierung ... 515
16.2 ... Externe Kommandos asynchron ausführen ... 521
16.3 ... Node.js-Kindprozesse erzeugen mit »fork« ... 527
16.4 ... Das »cluster«-Modul ... 532
16.5 ... Worker-Threads ... 541
16.6 ... Promises in Node.js ... 544
16.7 ... Async Functions ... 552
16.8 ... Zusammenfassung ... 555
17.1 ... Grundlagen ... 558
17.2 ... Operatoren ... 564
17.3 ... Subjects ... 581
17.4 ... Scheduler ... 582
17.5 ... Zusammenfassung ... 583
18.1 ... Einleitung ... 585
18.2 ... Readable Streams ... 589
18.3 ... Writable Streams ... 601
18.4 ... Duplex-Streams ... 609
18.5 ... Transform-Streams ... 611
18.6 ... Gulp ... 613
18.7 ... Zusammenfassung ... 615
19.1 ... Synchrone und asynchrone Funktionen ... 617
19.2 ... Existenz von Dateien ... 619
19.3 ... Dateien lesen ... 620
19.4 ... Fehlerbehandlung ... 626
19.5 ... In Dateien schreiben ... 627
19.6 ... Verzeichnisoperationen ... 631
19.7 ... Weiterführende Operationen ... 634
19.8 ... Zusammenfassung ... 640
20.1 ... Unix-Sockets ... 642
20.2 ... Windows Pipes ... 649
20.3 ... TCP-Sockets ... 650
20.4 ... UDP-Sockets ... 657
20.5 ... Zusammenfassung ... 662
21.1 ... Die häufigsten Operationen ... 664
21.2 ... Weiterführende Operationen ... 677
21.3 ... Werkzeuge für NPM ... 685
21.4 ... Yarn ... 688
21.5 ... Zusammenfassung ... 689
22.1 ... Styleguides ... 692
22.2 ... Linter ... 693
22.3 ... Prettier ... 699
22.4 ... PMD CPD ... 700
22.5 ... Husky ... 703
22.6 ... Zusammenfassung ... 704
23.1 ... Unittesting ... 705
23.2 ... Assertion Testing ... 708
23.3 ... Jasmine ... 714
23.4 ... Jest ... 723
23.5 ... Praktisches Beispiel von Unittests mit »Jest« ... 726
23.6 ... Umgang mit Abhängigkeiten -- Mocking ... 731
23.7 ... Zusammenfassung ... 734
24.1 ... »filter input« und »escape output« ... 736
24.2 ... Absicherung des Servers ... 739
24.3 ... NPM-Sicherheit ... 758
24.4 ... Schutz des Clients ... 761
24.5 ... Zusammenfassung ... 766
25.1 ... Deployment ... 767
25.2 ... Toolunterstützung ... 775
25.3 ... Skalierung ... 777
25.4 ... »pm2« -- Prozessmanagement ... 786
25.5 ... Docker ... 787
25.6 ... Zusammenfassung ... 789
26.1 ... YAGNI -- You Ain't Gonna Need It ... 791
26.2 ... CPU ... 792
26.3 ... Arbeitsspeicher ... 800
26.4 ... Netzwerk ... 806
26.5 ... Zusammenfassung ... 810
27.1 ... Grundlagen ... 811
27.2 ... Architektur ... 814
27.3 ... Die Infrastruktur ... 816
27.4 ... Ein asynchroner Microservice mit RabbitMQ ... 818
27.5 ... API-Gateway ... 827
27.6 ... Synchroner Microservice mit Express ... 840
27.7 ... Zusammenfassung ... 849
28.1 ... Die zehn Dinge, die Ryan Dahl bereut ... 851
28.2 ... Installation von Deno ... 854
28.3 ... Ausführung ... 855
28.4 ... Arbeiten mit Dateien ... 857
28.5 ... Ein Webserver mit Deno ... 864
28.6 ... Das Modulsystem ... 866
28.7 ... Zusammenfassung ... 871