Node.js
Das umfassende Handbuch. Serverseitige Web-Applikationen mit JavaScript entwickeln
Node.js
Das umfassende Handbuch. Serverseitige Web-Applikationen mit JavaScript entwickeln
- Gebundenes Buch
- Merkliste
- Auf die Merkliste
- Bewerten Bewerten
- Teilen
- Produkt teilen
- Produkterinnerung
- Produkterinnerung
Das Buch bietet Ihnen einen umfassenden Einstieg in die serverseitige JavaScript-Plattform Node.js ab Version 8.0 LTS. An einfachen und leicht verständlichen Beispielen erlernen Sie die Grundlagen von Node.js, professionelle Anwender profitieren von zahlreichen Tipps und Lösungen für den Entwickler-Alltag. Das Buch wurde für die dritte Auflage grundlegend aktualisiert und enthält nun eigene Kapitel zu RxJS, Microservices, Testing, Authentifizierung und Session-Handling, auch erfahren Sie mehr über HTTPS2, Docker, REST-Services mit Express u. v. m.
Aus dem Inhalt:
GrundlagenGoogles…mehr
Aus dem Inhalt:
GrundlagenGoogles V8-EngineInstallation von Node.jsAnpassung und ErweiterungNode.js-Module verwendenNode Package Manager (NPM)KommunikationsmöglichkeitenAsynchrone ProgrammierungAnbindung von DatenbankenQualitätssicherungSkalierbarkeit und DeploymentServer und Client schützen
Die Fachpresse zur Vorauflage:
eStrategy: »Ob alltägliche Probleme in der Webentwicklung oder Aufbau von Applikationen - die Lektüre wartet mit Dutzenden Tipps und Lösungen für professionelle Anwender auf.«
- Produktdetails
- Rheinwerk Computing
- Verlag: Rheinwerk Verlag
- Artikelnr. des Verlages: 459/06255
- 3., erw. Aufl.
- Seitenzahl: 747
- Erscheinungstermin: 28. August 2018
- Deutsch
- Abmessung: 247mm x 178mm x 47mm
- Gewicht: 1491g
- ISBN-13: 9783836262552
- ISBN-10: 383626255X
- Artikelnr.: 52678352
- Rheinwerk Computing
- Verlag: Rheinwerk Verlag
- Artikelnr. des Verlages: 459/06255
- 3., erw. Aufl.
- Seitenzahl: 747
- Erscheinungstermin: 28. August 2018
- Deutsch
- Abmessung: 247mm x 178mm x 47mm
- Gewicht: 1491g
- ISBN-13: 9783836262552
- ISBN-10: 383626255X
- Artikelnr.: 52678352
Geleitwort ... 23
Vorwort ... 25
1. Grundlagen ... 29
1.1 ... Die Geschichte von Node.js ... 31
1.2 ... Die Organisation von Node.js ... 35
1.3 ... Versionierung von Node.js ... 37
1.4 ... Vorteile von Node.js ... 38
1.5 ... Einsatzgebiete von Node.js ... 39
1.6 ... Das Herzstück -- die V8-Engine ... 40
1.7 ... Bibliotheken um die Engine ... 47
1.8 ... Zusammenfassung ... 53
2. Installation ... 55
2.1 ... Installation von Paketen ... 56
2.2 ... Kompilieren und installieren ... 70
2.3 ... Node Version Manager ... 73
2.4 ... Zusammenfassung ... 74
3. Ein erstes Beispiel ... 75
3.1 ... Der interaktive Modus ... 75
3.2 ... Die erste Applikation ... 81
3.3 ... Debuggen von Node.js-Applikationen ... 90
3.4 ... Entwicklungswerkzeug »nodemon« ... 101
3.5 ... Zusammenfassung ... 102
4. Node.js-Module ... 103
4.1 ... Modularer Aufbau ... 103
4.2 ... Kernmodule ... 105
4.3 ... JavaScript-Modulsysteme ... 117
4.4 ... Eigene Module erzeugen und verwenden ... 121
4.5 ... Zusammenfassung ... 133
5. HTTP ... 135
5.1 ... Der Webserver ... 135
5.2 ... Node.js als HTTP-Client ... 157
5.3 ... Sichere Kommunikation mit HTTPS ... 161
5.4 ... HTTP/2 ... 163
5.5 ... Zusammenfassung ... 170
6. Express ... 171
6.1 ... Aufbau ... 171
6.2 ... Installation ... 172
6.3 ... Grundlagen ... 174
6.4 ... Setup ... 176
6.5 ... Moviedatenbank ... 179
6.6 ... Middleware ... 187
6.7 ... Erweitertes Routing -- Löschen von Datensätzen ... 192
6.8 ... Anlegen und Bearbeiten von Datensätzen -- Body-Parser ... 195
6.9 ... Express 5 ... 202
6.10 ... HTTPS und HTTP/2 ... 203
6.11 ... Zusammenfassung ... 205
7. Template-Engines ... 207
7.1 ... Eine eigene Template-Engine ... 208
7.2 ... Template-Engines in der Praxis -- Pug ... 210
7.3 ... Handlebars ... 225
7.4 ... Zusammenfassung und Ausblick ... 234
8. Anbindung von Datenbanken ... 237
8.1 ... Node.js und relationale Datenbanken ... 238
8.2 ... Node.js und nicht relationale Datenbanken ... 261
8.3 ... Zusammenfassung ... 276
9. Authentifizierung und Sessionhandling ... 277
9.1 ... Passport ... 277
9.2 ... Setup und Konfiguration ... 278
9.3 ... Anmeldung an der Applikation ... 281
9.4 ... Zugriff auf Ressourcen ... 289
9.5 ... Zusammenfassung ... 300
10. REST-Server ... 301
10.1 ... REST -- eine kurze Einführung und wie es in Webapplikationen verwendet wird ... 301
10.2 ... Zugriff auf die Applikation ... 302
10.3 ... Anpassungen an der Applikationsstruktur ... 303
10.4 ... Lesende Anfragen ... 304
10.5 ... Schreibende Anfragen ... 315
10.6 ... Authentifizierung mit JWT ... 323
10.7 ... Swagger ... 328
10.8 ... GraphQL ... 333
10.9 ... Zusammenfassung ... 338
11. Echtzeit-Webapplikationen ... 339
11.1 ... Die Beispielapplikation ... 340
11.2 ... Setup ... 341
11.3 ... Websockets ... 347
11.4 ... Socket.IO ... 362
11.5 ... Zusammenfassung ... 367
12. Node auf der Kommandozeile ... 369
12.1 ... Grundlagen ... 369
12.2 ... Der Aufbau einer Kommandozeilenapplikation ... 372
12.3 ... Zugriff auf Ein- und Ausgabe ... 377
12.4 ... Werkzeuge ... 387
12.5 ... Signale ... 394
12.6 ... Exit Codes ... 396
12.7 ... Zusammenfassung ... 398
13. Asynchrone Programmierung ... 399
13.1 ... Grundlagen asynchroner Programmierung ... 399
13.2 ... Externe Kommandos asynchron ausführen ... 404
13.3 ... Node.js-Kindprozesse erzeugen mit »fork« ... 410
13.4 ... Das »cluster«-Modul ... 414
13.5 ... Promises in Node.js ... 423
13.6 ... Async Functions ... 429
13.7 ... Zusammenfassung ... 430
14. RxJS ... 433
14.1 ... Grundlagen ... 434
14.2 ... Operatoren ... 440
14.3 ... Subjects ... 456
14.4 ... Scheduler ... 458
14.5 ... Zusammenfassung ... 459
15. Streams ... 461
15.1 ... Einleitung ... 461
15.2 ... Readable Streams ... 464
15.3 ... Writable Streams ... 476
15.4 ... Duplex-Streams ... 484
15.5 ... Transform-Streams ... 486
15.6 ... Gulp ... 488
15.7 ... Zusammenfassung ... 490
16. Arbeiten mit Dateien ... 491
16.1 ... Synchrone und asynchrone Funktionen ... 491
16.2 ... Existenz von Dateien ... 493
16.3 ... Dateien lesen ... 494
16.4 ... Fehlerbehandlung ... 499
16.5 ... In Dateien schreiben ... 500
16.6 ... Verzeichnisoperationen ... 504
16.7 ... Weiterführende Operationen ... 507
16.8 ... Zusammenfassung ... 512
17. Socket-Server ... 513
17.1 ... Unix-Sockets ... 514
17.2 ... Windows Pipes ... 521
17.3 ... TCP-Sockets ... 522
17.4 ... UDP-Sockets ... 530
17.5 ... Zusammenfassung ... 534
18. Package Manager ... 535
18.1 ... Die häufigsten Operationen ... 536
18.2 ... Weiterführende Operationen ... 547
18.3 ... Werkzeuge für NPM ... 554
18.4 ... Yarn ... 557
18.5 ... Zusammenfassung ... 558
19. Qualitätssicherung ... 561
19.1 ... Styleguides ... 562
19.2 ... Linter ... 563
19.3 ... Prettier ... 568
19.4 ... PMD CPD ... 569
19.5 ... Plato ... 572
19.6 ... Zusammenfassung ... 574
20. Testing ... 575
20.1 ... Unittesting ... 575
20.2 ... Assertion Testing ... 578
20.3 ... Jasmine ... 584
20.4 ... »nodeunit« ... 592
20.5 ... Praktisches Beispiel von Unittests mit »nodeunit« ... 597
20.6 ... Zusammenfassung ... 602
21. Sicherheitsaspekte ... 605
21.1 ... »filter input« und »escape output« ... 606
21.2 ... Absicherung des Servers ... 609
21.3 ... NPM-Sicherheit ... 627
21.4 ... Schutz des Clients ... 631
21.5 ... Zusammenfassung ... 635
22. Skalierbarkeit und Deployment ... 637
22.1 ... Deployment ... 637
22.2 ... Toolunterstützung ... 646
22.3 ... Skalierung ... 654
22.4 ... »pm2« -- Prozessmanagement ... 664
22.5 ... Docker ... 665
22.6 ... Zusammenfassung ... 667
23. Microservices mit Node.js ... 669
23.1 ... Grundlagen ... 669
23.2 ... Architektur ... 672
23.3 ... Die Infrastruktur ... 674
23.4 ... Seneca ... 676
23.5 ... API-Gateway ... 685
23.6 ... Express ... 693
23.7 ... Zusammenfassung ... 703
24. Typsichere Applikationen in Node.js ... 705
24.1 ... Typsysteme für Node.js ... 706
24.2 ... Werkzeuge und Konfiguration ... 710
24.3 ... Grundlagen ... 714
24.4 ... Klassen ... 720
24.5 ... Interfaces ... 723
24.6 ... Generics ... 724
24.7 ... TypeScript im Einsatz in einer Node.js-Applikation ... 726
24.8 ... Zusammenfassung ... 728
Index ... 729
Geleitwort ... 23
Vorwort ... 25
1. Grundlagen ... 29
1.1 ... Die Geschichte von Node.js ... 31
1.2 ... Die Organisation von Node.js ... 35
1.3 ... Versionierung von Node.js ... 37
1.4 ... Vorteile von Node.js ... 38
1.5 ... Einsatzgebiete von Node.js ... 39
1.6 ... Das Herzstück -- die V8-Engine ... 40
1.7 ... Bibliotheken um die Engine ... 47
1.8 ... Zusammenfassung ... 53
2. Installation ... 55
2.1 ... Installation von Paketen ... 56
2.2 ... Kompilieren und installieren ... 70
2.3 ... Node Version Manager ... 73
2.4 ... Zusammenfassung ... 74
3. Ein erstes Beispiel ... 75
3.1 ... Der interaktive Modus ... 75
3.2 ... Die erste Applikation ... 81
3.3 ... Debuggen von Node.js-Applikationen ... 90
3.4 ... Entwicklungswerkzeug »nodemon« ... 101
3.5 ... Zusammenfassung ... 102
4. Node.js-Module ... 103
4.1 ... Modularer Aufbau ... 103
4.2 ... Kernmodule ... 105
4.3 ... JavaScript-Modulsysteme ... 117
4.4 ... Eigene Module erzeugen und verwenden ... 121
4.5 ... Zusammenfassung ... 133
5. HTTP ... 135
5.1 ... Der Webserver ... 135
5.2 ... Node.js als HTTP-Client ... 157
5.3 ... Sichere Kommunikation mit HTTPS ... 161
5.4 ... HTTP/2 ... 163
5.5 ... Zusammenfassung ... 170
6. Express ... 171
6.1 ... Aufbau ... 171
6.2 ... Installation ... 172
6.3 ... Grundlagen ... 174
6.4 ... Setup ... 176
6.5 ... Moviedatenbank ... 179
6.6 ... Middleware ... 187
6.7 ... Erweitertes Routing -- Löschen von Datensätzen ... 192
6.8 ... Anlegen und Bearbeiten von Datensätzen -- Body-Parser ... 195
6.9 ... Express 5 ... 202
6.10 ... HTTPS und HTTP/2 ... 203
6.11 ... Zusammenfassung ... 205
7. Template-Engines ... 207
7.1 ... Eine eigene Template-Engine ... 208
7.2 ... Template-Engines in der Praxis -- Pug ... 210
7.3 ... Handlebars ... 225
7.4 ... Zusammenfassung und Ausblick ... 234
8. Anbindung von Datenbanken ... 237
8.1 ... Node.js und relationale Datenbanken ... 238
8.2 ... Node.js und nicht relationale Datenbanken ... 261
8.3 ... Zusammenfassung ... 276
9. Authentifizierung und Sessionhandling ... 277
9.1 ... Passport ... 277
9.2 ... Setup und Konfiguration ... 278
9.3 ... Anmeldung an der Applikation ... 281
9.4 ... Zugriff auf Ressourcen ... 289
9.5 ... Zusammenfassung ... 300
10. REST-Server ... 301
10.1 ... REST -- eine kurze Einführung und wie es in Webapplikationen verwendet wird ... 301
10.2 ... Zugriff auf die Applikation ... 302
10.3 ... Anpassungen an der Applikationsstruktur ... 303
10.4 ... Lesende Anfragen ... 304
10.5 ... Schreibende Anfragen ... 315
10.6 ... Authentifizierung mit JWT ... 323
10.7 ... Swagger ... 328
10.8 ... GraphQL ... 333
10.9 ... Zusammenfassung ... 338
11. Echtzeit-Webapplikationen ... 339
11.1 ... Die Beispielapplikation ... 340
11.2 ... Setup ... 341
11.3 ... Websockets ... 347
11.4 ... Socket.IO ... 362
11.5 ... Zusammenfassung ... 367
12. Node auf der Kommandozeile ... 369
12.1 ... Grundlagen ... 369
12.2 ... Der Aufbau einer Kommandozeilenapplikation ... 372
12.3 ... Zugriff auf Ein- und Ausgabe ... 377
12.4 ... Werkzeuge ... 387
12.5 ... Signale ... 394
12.6 ... Exit Codes ... 396
12.7 ... Zusammenfassung ... 398
13. Asynchrone Programmierung ... 399
13.1 ... Grundlagen asynchroner Programmierung ... 399
13.2 ... Externe Kommandos asynchron ausführen ... 404
13.3 ... Node.js-Kindprozesse erzeugen mit »fork« ... 410
13.4 ... Das »cluster«-Modul ... 414
13.5 ... Promises in Node.js ... 423
13.6 ... Async Functions ... 429
13.7 ... Zusammenfassung ... 430
14. RxJS ... 433
14.1 ... Grundlagen ... 434
14.2 ... Operatoren ... 440
14.3 ... Subjects ... 456
14.4 ... Scheduler ... 458
14.5 ... Zusammenfassung ... 459
15. Streams ... 461
15.1 ... Einleitung ... 461
15.2 ... Readable Streams ... 464
15.3 ... Writable Streams ... 476
15.4 ... Duplex-Streams ... 484
15.5 ... Transform-Streams ... 486
15.6 ... Gulp ... 488
15.7 ... Zusammenfassung ... 490
16. Arbeiten mit Dateien ... 491
16.1 ... Synchrone und asynchrone Funktionen ... 491
16.2 ... Existenz von Dateien ... 493
16.3 ... Dateien lesen ... 494
16.4 ... Fehlerbehandlung ... 499
16.5 ... In Dateien schreiben ... 500
16.6 ... Verzeichnisoperationen ... 504
16.7 ... Weiterführende Operationen ... 507
16.8 ... Zusammenfassung ... 512
17. Socket-Server ... 513
17.1 ... Unix-Sockets ... 514
17.2 ... Windows Pipes ... 521
17.3 ... TCP-Sockets ... 522
17.4 ... UDP-Sockets ... 530
17.5 ... Zusammenfassung ... 534
18. Package Manager ... 535
18.1 ... Die häufigsten Operationen ... 536
18.2 ... Weiterführende Operationen ... 547
18.3 ... Werkzeuge für NPM ... 554
18.4 ... Yarn ... 557
18.5 ... Zusammenfassung ... 558
19. Qualitätssicherung ... 561
19.1 ... Styleguides ... 562
19.2 ... Linter ... 563
19.3 ... Prettier ... 568
19.4 ... PMD CPD ... 569
19.5 ... Plato ... 572
19.6 ... Zusammenfassung ... 574
20. Testing ... 575
20.1 ... Unittesting ... 575
20.2 ... Assertion Testing ... 578
20.3 ... Jasmine ... 584
20.4 ... »nodeunit« ... 592
20.5 ... Praktisches Beispiel von Unittests mit »nodeunit« ... 597
20.6 ... Zusammenfassung ... 602
21. Sicherheitsaspekte ... 605
21.1 ... »filter input« und »escape output« ... 606
21.2 ... Absicherung des Servers ... 609
21.3 ... NPM-Sicherheit ... 627
21.4 ... Schutz des Clients ... 631
21.5 ... Zusammenfassung ... 635
22. Skalierbarkeit und Deployment ... 637
22.1 ... Deployment ... 637
22.2 ... Toolunterstützung ... 646
22.3 ... Skalierung ... 654
22.4 ... »pm2« -- Prozessmanagement ... 664
22.5 ... Docker ... 665
22.6 ... Zusammenfassung ... 667
23. Microservices mit Node.js ... 669
23.1 ... Grundlagen ... 669
23.2 ... Architektur ... 672
23.3 ... Die Infrastruktur ... 674
23.4 ... Seneca ... 676
23.5 ... API-Gateway ... 685
23.6 ... Express ... 693
23.7 ... Zusammenfassung ... 703
24. Typsichere Applikationen in Node.js ... 705
24.1 ... Typsysteme für Node.js ... 706
24.2 ... Werkzeuge und Konfiguration ... 710
24.3 ... Grundlagen ... 714
24.4 ... Klassen ... 720
24.5 ... Interfaces ... 723
24.6 ... Generics ... 724
24.7 ... TypeScript im Einsatz in einer Node.js-Applikation ... 726
24.8 ... Zusammenfassung ... 728
Index ... 729