mitmario.dev

Was ist Node?

Node.js Sandbox 3 Min Lesezeit 3 BeispieleLektion 1 von 6

Du kannst JavaScript. Du hast Funktionen geschrieben, Arrays durchlaufen, auf Klicks reagiert und Daten aus dem Netz geholt. All das ändert sich hier nicht. Was sich ändert, ist der Ort.

Bisher lief dein Code im Browser. Der Browser hat die Seite geladen, dein Skript gefunden, ausgeführt und danach gewartet: auf einen Klick, auf eine Eingabe, auf einen Menschen. Node ist dieselbe Sprache an einem anderen Ort, und an diesem Ort gibt es keinen Menschen.

Dieselbe Sprache, dieselbe Engine, anderes Umfeld

Wenn du in Chrome JavaScript ausführst, arbeitet darunter eine Engine namens V8. Sie liest deinen Code und führt ihn aus. Node benutzt genau dieselbe Engine. Ein map, ein await, eine Klasse, ein Template-String: alles verhält sich hier Zeichen für Zeichen wie im Browser.

Was der Browser zusätzlich mitbringt, ist das Drumherum. Ein Fenster, ein Dokument, eine Adresszeile, ein Speicher für die Seite. Das gehört nicht zur Sprache, das gehört zum Browser. Node bringt ein anderes Drumherum mit: Zugriff auf Dateien, auf Netzwerkverbindungen, auf die Kommandozeile, auf den Prozess selbst.

Vergleiche die beiden ersten Beispiele nebeneinander.

Im Browser wartet der Code auf einen Menschen
<button id="rechnen">Preis ausrechnen</button>

<script>
  document.getElementById("rechnen").addEventListener("click", () => {
    const netto = 19;
    const brutto = netto * 1.19;
    console.log("Brutto:", brutto.toFixed(2), "EUR");
  });
</script>

Der Code steht in einer Seite, hängt sich an einen Knopf und tut erst etwas, wenn jemand darauf drückt. Ohne Klick passiert nichts. Das ist im Browser der Normalfall: dein Skript ist eine Sammlung von Antworten auf Dinge, die ein Mensch tun könnte.

In Node läuft dasselbe von oben nach unten
const netto = 19;
const brutto = netto * 1.19;
console.log("Brutto:", brutto.toFixed(2), "EUR");

Hier gibt es keinen Knopf, keine Seite und niemanden, der klickt. Die Datei läuft von der ersten Zeile bis zur letzten, gibt ihr Ergebnis aus und ist fertig. Kein Warten, kein Ereignis, kein Zuschauer.

Genau das ist der Unterschied, an dem sich beim Umstieg alles entscheidet. Im Browser schreibst du Code, der auf etwas reagiert. In Node schreibst du Code, der etwas tut.

Dein Code ist nicht mehr öffentlich

Das klingt nach einer Kleinigkeit und ist die wichtigste praktische Folge des Ortswechsels.

Alles, was du im Browser ausgelieferst hast, konnte jeder lesen. Rechtsklick, Quelltext anzeigen, fertig. Deshalb durfte dort nie ein Passwort stehen, nie ein Zugangsschlüssel, nie die Adresse deiner Datenbank. Wer es doch getan hat, hat es verschenkt.

In Node liegt dein Code auf einem Rechner, den du kontrollierst. Der Aufrufer sieht nur, was du ihm antwortest, nicht wie du zu der Antwort gekommen bist. Damit dürfen hier Dinge liegen, die im Browser nie liegen dürfen: Zugangsdaten, Schlüssel, die ganze Datenbank, die Logik hinter einem Preis. Und damit trägst du eine Verantwortung, die du vorher nicht hattest, denn ein Fehler in Servercode gibt unter Umständen nicht nur deine Daten preis, sondern die von allen.

Was in Node fehlt

Weil das Drumherum ein anderes ist, fehlen ein paar Namen, die dir in Fleisch und Blut übergegangen sind. Das dritte Beispiel zeigt, wie sich das anfühlt.

Was es in Node nicht gibt
console.log("Los geht es");
console.log(document.title);

Die erste Zeile läuft noch. Die zweite bricht ab, und zwar nicht mit einer Warnung, sondern mit einem Abbruch: document gibt es hier nicht, und ein Zugriff auf einen Namen, den es nicht gibt, beendet das Programm.

Das ist der häufigste Fehler beim Umstieg, und er ist kein Tippfehler. Es ist ein Weltbildfehler: Der Kopf greift nach document, weil er es tausendmal getan hat. Lektion 1.3 nimmt sich das in Ruhe vor und stellt die drei Spalten nebeneinander: was nur der Browser hat, was nur Node hat und was in beiden dasselbe ist.

Die häufigste Verwechslung

Zum Schluss ein Missverständnis, das erstaunlich lange hält: Node ist keine Bibliothek, die du in dein Projekt einbindest. Es gibt kein import node from "node". Node ist das Programm, das deine Datei startet. Du rufst node index.js auf, und ab da läuft dein Code in dieser Umgebung.

So ähnlich, wie du keine Bibliothek einbindest, um deine HTML-Datei im Browser zu öffnen. Der Browser ist das Programm, das sie öffnet. Node ist das Programm, das deine JavaScript-Datei ausführt.

In der nächsten Lektion machst du genau das zum ersten Mal.

Zum Mitnehmen

Node ist keine neue Sprache und keine Bibliothek, die du einbindest. Es ist das Programm, das deine JavaScript-Datei ausführt.

Jetzt du

Basis Konto, kostenlos

Im Editor änderst du die Beispiele dieser Lektion und lässt sie gleich laufen. So merkst du am schnellsten, ob es sitzt.

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.