Zum Inhalt springen
aviral gupta

// LERNEN · SPRACHEN & FRAMEWORKS

Node.js

Ein praxisnaher Node.js-Kurs vom ersten Skript und dem Aufsetzen eines Projekts bis zu HTTP-APIs, Streams, Tests, Leistung und Sicherheit. Jedes Beispiel wird mit der aktuellen LTS-Version ausgeführt.

Niveau: Einstieg bis Vertiefung · Für: Entwicklerinnen und Entwickler mit JavaScript-Grundlagen, die Kommandozeilenwerkzeuge und Dienste mit Node.js bauen möchten.

Lehrplan

Einstieg

Vollständig

Nach dieser Stufe können Sie

  • Ein Node.js-Projekt aufsetzen, das im beabsichtigten Modulsystem läuft, mit Skripten in package.json und Konfiguration aus --env-file
  • Ein Kommandozeilenwerkzeug schreiben, das Argumente mit util.parseArgs auswertet, Dateien mit node:fs/promises liest und schreibt und mit einem aussagekräftigen Exit-Code endet
  • Callbacks, Promises und async/await richtig kombinieren, Aufgaben parallel ausführen und Ablehnungen behandeln
  • Unit-Tests mit dem eingebauten Test-Runner node:test und node:assert schreiben und ausführen
  1. B1Node ausführen und Projektgrundlagen5 von 5 geschrieben · 5 LektionenLäuft auf Ihrem Rechner

    Ein Projekt aufsetzen, das läuft, seine Konfiguration liest und laut scheitert

    Sie bauen: Ein kleines Kommandozeilenwerkzeug mit Argumenten

    1. B1.1Node.js-Projektgrundlagen: Module, Konfiguration und Fehler
    2. B1.2Der Befehl node, die REPL und --watch
    3. B1.3Argumente mit process.argv und util.parseArgs
    4. B1.4stdout, stderr und Exit-Codes
    5. B1.5Build: ein Trinkgeldrechner für die Kommandozeile
  2. B2npm und Pakete5 von 5 geschrieben · 5 LektionenLäuft auf Ihrem Rechner
  3. B3Dateien und Pfade5 von 5 geschrieben · 5 LektionenLäuft auf Ihrem Rechner

    Dateien sicher lesen, schreiben und ordnen

    Sie bauen: Eine Notiz-Kommandozeile, die JSON auf der Festplatte speichert

    1. B3.1Pfade und Datei-URLs
    2. B3.2Dateien lesen mit fs/promises
    3. B3.3Schreiben, Anhängen und atomares Ersetzen
    4. B3.4Ordner und stat
    5. B3.5Build: ein Notizen-CLI, das JSON auf der Festplatte speichert
  4. B4Asynchrones Node5 von 5 geschrieben · 5 LektionenLäuft auf Ihrem Rechner

    Asynchrone Vorgänge richtig kombinieren, nacheinander und parallel

    Sie bauen: Ein paralleler Bericht über Ordnergrößen

    1. B4.1Von Callbacks zu Promises
    2. B4.2async/await und Fehlerbehandlung
    3. B4.3Nacheinander und parallel
    4. B4.4Timer, setImmediate und process.nextTick
    5. B4.5Build: ein paralleler Ordnergrößen-Bericht
  5. B5Ereignisse, Eingaben und erste Tests5 von 5 geschrieben · 5 LektionenLäuft auf Ihrem Rechner

    Auf Ereignisse reagieren, Benutzereingaben lesen und das Ergebnis testen

    Sie bauen: Eine getestete To-do-Kommandozeile

    1. B5.1Der EventEmitter
    2. B5.2Eingaben lesen mit readline
    3. B5.3Tests mit node:test und node:assert
    4. B5.4node --test und der Watch-Modus
    5. B5.5Projekt: eine getestete To-do-CLI

Projekt der Stufe Einstieg

Logbuch-Kommandozeile

Ein Journal für die Kommandozeile, das Einträge mit Schlagwörtern in einer JSON-Datei hinzufügt, auflistet, filtert und exportiert, bei einer beschädigten Datei klar scheitert und eine node:test-Suite hat.

Läuft auf Ihrem RechnerSelbst geprüft anhand einer Checkliste

Zur Projektanleitung

Aufbau

Demnächst verfügbar

Nach dieser Stufe können Sie

  • Eine JSON-HTTP-API nur mit node:http bauen, mit Routing, Einlesen des Bodys, Statuscodes und geordnetem Herunterfahren
  • Große Dateien mit Streams und pipeline() verarbeiten und dabei Backpressure beachten
  • Einen HTTP-Dienst mit node:test testen, mit Mocks, simulierten Timern und Abdeckung, und andere Dienste mit fetch aufrufen
  • TypeScript-Dateien direkt mit dem Type Stripping von Node.js ausführen und sie getrennt mit tsc prüfen
  1. I1HTTP mit node:httpDemnächst verfügbar · 6 LektionenLäuft auf Ihrem Rechner

    JSON über HTTP ohne Framework bereitstellen und abrufen

    Sie bauen: Eine REST-API für Notizen

    1. I1.1Demnächst verfügbar
    2. I1.2Demnächst verfügbar
    3. I1.3Demnächst verfügbar
    4. I1.4Demnächst verfügbar
    5. I1.5Demnächst verfügbar
    6. I1.6Demnächst verfügbar
  2. I2Buffer und StreamsDemnächst verfügbar · 5 LektionenLäuft auf Ihrem Rechner

    Daten verarbeiten, die größer als der Arbeitsspeicher sind

    Sie bauen: Ein streamender Konverter von CSV nach NDJSON

    1. I2.1Demnächst verfügbar
    2. I2.2Demnächst verfügbar
    3. I2.3Demnächst verfügbar
    4. I2.4Demnächst verfügbar
    5. I2.5Demnächst verfügbar
  3. I3Tests im DetailDemnächst verfügbar · 5 LektionenLäuft auf Ihrem Rechner

    Dienste isoliert und mit Abdeckung testen

    Sie bauen: Eine Testsuite für die Notiz-API mit einer Abdeckungsschwelle

    1. I3.1Demnächst verfügbar
    2. I3.2Demnächst verfügbar
    3. I3.3Demnächst verfügbar
    4. I3.4Demnächst verfügbar
    5. I3.5Demnächst verfügbar
  4. I4Fehler, Prozesse und KonfigurationDemnächst verfügbar · 5 LektionenLäuft auf Ihrem Rechner

    Fehler und Signale wie ein Produktionsdienst behandeln

    Sie bauen: Ein Task-Runner, der Befehle startet

    1. I4.1Demnächst verfügbar
    2. I4.2Demnächst verfügbar
    3. I4.3Demnächst verfügbar
    4. I4.4Demnächst verfügbar
    5. I4.5Demnächst verfügbar
  5. I5TypeScript mit Node.jsDemnächst verfügbar · 5 LektionenLäuft auf Ihrem Rechner

    TypeScript mit Node.js ausführen und die Typen prüfen

    Sie bauen: Die Notiz-Kommandozeile nach TypeScript portieren

    1. I5.1Demnächst verfügbar
    2. I5.2Demnächst verfügbar
    3. I5.3Demnächst verfügbar
    4. I5.4Demnächst verfügbar
    5. I5.5Demnächst verfügbar

Projekt der Stufe Aufbau

Linkprüfer-API

Ein node:http-Dienst, der eine Liste von URLs mit fetch bei begrenzter Nebenläufigkeit prüft, die Ergebnisse als NDJSON streamt und bei SIGTERM sauber herunterfährt.

Läuft auf Ihrem RechnerSelbst geprüft anhand einer Checkliste

Vertiefung

Demnächst verfügbar

Nach dieser Stufe können Sie

  • Blockaden der Ereignisschleife, Speicherlecks und Hotspots mit dem Inspector, CPU-Profilen, Heap-Snapshots und perf_hooks finden und beheben
  • CPU-lastige Arbeit in Worker-Threads auslagern und erklären, wann cluster oder Kindprozesse besser passen
  • Einen Dienst mit dem Berechtigungsmodell, node:crypto für Hashes und Tokens, Eingabeprüfung und Abhängigkeitsprüfung absichern
  • Eine Bibliothek mit bedingten exports paketieren und veröffentlichen und ein Kommandozeilenwerkzeug als einzelne ausführbare Datei ausliefern
  1. A1Ereignisschleife und LeistungDemnächst verfügbar · 5 LektionenLäuft auf Ihrem Rechner

    Blockaden der Ereignisschleife finden und beseitigen

    Sie bauen: Einen langsamen Endpunkt beheben und es mit Zahlen belegen

    1. A1.1Demnächst verfügbar
    2. A1.2Demnächst verfügbar
    3. A1.3Demnächst verfügbar
    4. A1.4Demnächst verfügbar
    5. A1.5Demnächst verfügbar
  2. A2NebenläufigkeitDemnächst verfügbar · 5 LektionenLäuft auf Ihrem Rechner

    Worker-Threads und Prozesse dort einsetzen, wo sie helfen

    Sie bauen: Ein Hash-Dienst abseits des Hauptthreads

    1. A2.1Demnächst verfügbar
    2. A2.2Demnächst verfügbar
    3. A2.3Demnächst verfügbar
    4. A2.4Demnächst verfügbar
    5. A2.5Demnächst verfügbar
  3. A3Debugging und DiagnoseDemnächst verfügbar · 5 LektionenLäuft auf Ihrem Rechner

    Laufende Prozesse und Speicherprobleme untersuchen

    Sie bauen: Ein Speicherleck in einem Beispieldienst finden und beheben

    1. A3.1Demnächst verfügbar
    2. A3.2Demnächst verfügbar
    3. A3.3Demnächst verfügbar
    4. A3.4Demnächst verfügbar
    5. A3.5Demnächst verfügbar
  4. A4SicherheitDemnächst verfügbar · 6 LektionenLäuft auf Ihrem Rechner

    Einen Node.js-Dienst absichern

    Sie bauen: Ein abgesicherter Dateidienst

    1. A4.1Demnächst verfügbar
    2. A4.2Demnächst verfügbar
    3. A4.3Demnächst verfügbar
    4. A4.4Demnächst verfügbar
    5. A4.5Demnächst verfügbar
    6. A4.6Demnächst verfügbar
  5. A5Daten und AuslieferungDemnächst verfügbar · 5 LektionenLäuft auf Ihrem Rechner

    Daten lokal mit node:sqlite speichern und Code an andere ausliefern

    Sie bauen: Das Kommandozeilenwerkzeug des Abschlussprojekts paketieren

    1. A5.1Demnächst verfügbar
    2. A5.2Demnächst verfügbar
    3. A5.3Demnächst verfügbar
    4. A5.4Demnächst verfügbar
    5. A5.5Demnächst verfügbar

Projekt der Stufe Vertiefung

Job-Warteschlange mit Workern

Ein Dienst, der CPU-lastige Jobs in einem Worker-Pool ausführt, ihren Zustand in node:sqlite speichert, einen Neustart übersteht und unter dem Berechtigungsmodell läuft.

Läuft auf Ihrem RechnerSelbst geprüft anhand einer Checkliste

Abschlussprojekt

Abschlussprojekt

Ein selbst gehosteter Dienst Ihrer Wahl

Ein kleiner Dienst, etwa ein RSS-Reader, der HTTP, Streams, Speicherung, Tests, TypeScript und Sicherheit verbindet und als Paket oder einzelne ausführbare Datei veröffentlicht wird.

Läuft auf Ihrem RechnerSelbst geprüft anhand einer Checkliste

Quellen