Abschnitt 2 · Lektion 3
Eingebaute Module
Node bringt eine ganze Werkzeugkiste mit, und die ist größer, als die meisten vermuten. Du musst
nichts installieren, nichts herunterladen und nichts in eine package.json eintragen. Die Module
sind da, sobald Node da ist.
Die Module, die in diesem Kurs vorkommen
Ein Überblick, damit du weißt, was noch kommt:
node:fsliest und schreibt Dateien. Abschnitt 3 gehört ihm ganz.node:pathsetzt Pfade zusammen, ohne dass du Schrägstriche tippst. Kommt in der nächsten Lektion dran.node:osbeantwortet Fragen über den Rechner: Betriebssystem, Speicher, Prozessoren.node:urlzerlegt Adressen in ihre Bestandteile.node:httpbaut einen Webserver. Damit fängt Abschnitt 8 an.node:cryptomacht Prüfsummen, Zufallswerte und Verschlüsselung. Abschnitt 14 braucht es für Passwörter.node:sqlitespricht mit einer Datenbankdatei. Abschnitt 12.node:testführt Tests aus. Abschnitt 17.
Die Liste ist nicht vollständig, es gibt noch etwa vierzig weitere. Aber diese acht begleiten dich durch den Kurs.
import os from "node:os";
import path from "node:path";
console.log("Plattform:", os.platform());
console.log("Typ:", os.type());
console.log("Zeilenende sichtbar gemacht:", JSON.stringify(os.EOL));
console.log("Endung:", path.extname("bericht.pdf")); Schau dir node:os einen Moment an. Ein Programm im Browser kann nicht wissen, auf welchem
Betriebssystem es läuft, weil es das schlicht nichts angeht. Hier ist es eine normale Frage mit einer
normalen Antwort. Das ist der Unterschied zwischen einer Seite und einem Prozess auf einem Rechner.
os.EOL im Beispiel ist das Zeilenendezeichen des Systems. Es steht in Anführungszeichen, weil
JSON.stringify es sichtbar macht. Würdest du es direkt ausgeben, sähest du nur einen Umbruch.
Auch die großen Themen sind schon da
Kryptografie klingt nach einem Thema, für das man ein Paket installiert. Muss man aber nicht.
import { createHash, randomUUID } from "node:crypto";
const hash = createHash("sha256").update("Programmieren mit Mario").digest("hex");
console.log("Hash:", hash);
console.log("UUID-Länge:", randomUUID().length); Eine SHA-256-Prüfsumme, eine zufällige UUID, und das ganz ohne Abhängigkeit. Der Hash ist bei gleichem Text übrigens immer derselbe, das ist der Sinn der Sache. Die UUID ändert sich bei jedem Aufruf, deshalb misst das Beispiel nur ihre Länge.
Das ist eine Gewohnheit, die sich lohnt: Bevor du ein Paket suchst, schau nach, ob Node es schon kann. Jede Abhängigkeit, die du nicht hast, kann auch nicht kaputtgehen und dich nicht in einen Sicherheitsvorfall ziehen. Abschnitt 15 kommt darauf ausführlich zurück.
Warum überall node: davorsteht
Dir ist sicher aufgefallen, dass alle Importe hier mit node: beginnen. Das ist die empfohlene
Schreibweise, und sie hat drei handfeste Gründe.
Sie ist eindeutig. Wer import fs from "node:fs" liest, weiß sofort: eingebaut. Bei
import fs from "fs" muss man raten oder nachschauen, ob im Projekt vielleicht ein Paket namens
fs liegt.
Sie ist ehrlich gegenüber Werkzeugen. Bündler, Linter und Sicherheitsscanner können eingebaute Module am Präfix erkennen, ohne eine Liste aller Node-Versionen zu pflegen.
Und bei manchen Modulen ist sie Pflicht. Die neueren unter ihnen gibt es ausschließlich mit
Präfix, node:test und node:sqlite zum Beispiel.
// node:sqlite gibt es nur mit Präfix. So sucht Node nach einem Paket.
import { DatabaseSync } from "sqlite";
console.log(DatabaseSync); Lies die Fehlermeldung genau: Cannot find package 'sqlite'. Nicht Modul, sondern Paket. Ohne
Präfix hat Node den Namen für eine Abhängigkeit gehalten und in node_modules gesucht.
Bei den älteren Modulen funktioniert die Schreibweise ohne Präfix weiterhin, und du wirst sie in bestehendem Code ständig sehen. Nimm für eigenen Code trotzdem das Präfix. Es kostet fünf Zeichen und erspart dir eine Frage.
Zum Mitnehmen
Manche eingebauten Module gibt es ausschließlich mit dem node:-Präfix. Ohne das Präfix sucht Node nach einem Paket, das es nicht gibt.
Jetzt du
Basis Konto, kostenlosZu dieser Lektion gehört eine Aufgabe. Du schreibst den Code selbst, und nach jedem Lauf sagt dir eine Prüfliste, was schon stimmt.
Dafür brauchst du das Basis Konto. Es kostet nichts, und ein Passwort gibt es auch nicht.
In diesem Kurs läuft dein Code auf einem Server. Dafür hat das Basis Konto 1 Stunde im Monat, mehr Zeit gibt es mit dem Premium Konto.
Was in dieser Lektion steckt
-
Artikel mit 3 Beispielen zum Ausprobieren
Steht hier, ohne Konto lesbar.
-
Aufgabe, dein Code läuft auf einem Server
Öffnet sich mit dem Basis Konto.