5 Laufzeitumgebungen (Browser oder Node.js)

JavaScript wurde ursprünglich entwickelt, um in Webbrowsern ausgeführt zu werden und den Benutzern interaktive Webseiten zu bieten. Heutzutage kann JavaScript jedoch auch außerhalb des Browsers in verschiedenen Umgebungen ausgeführt werden. Die zwei bekanntesten Laufzeitumgebungen sind der Webbrowser und Node.js.

5.1 Browser

Im Kontext eines Web-Browsers bietet JavaScript die Möglichkeit, Benutzerinteraktionen zu verarbeiten, dynamischen Inhalt zu generieren und mit dem Document Object Model (DOM) zu interagieren. Im Browser ist JavaScript die Hauptprogrammiersprache und hat Zugang zu Web-APIs wie Fetch API (für HTTP-Anfragen), Web Storage API (für die Speicherung von Daten im Browser) und vielen anderen.

5.2 Node.js

Node.js ist eine Laufzeitumgebung, die es ermöglicht, JavaScript-Code außerhalb des Browsers auszuführen, typischerweise auf dem Server. Es wurde entwickelt, um skalierbare Netzwerkanwendungen zu erstellen und basiert auf der V8 JavaScript-Engine von Google Chrome. Mit Node.js können Entwickler serverseitige Anwendungen in JavaScript schreiben, was bedeutet, dass sie denselben Code sowohl auf dem Server als auch auf dem Client verwenden können.

Node.js hat eine Ereignisschleife und ist non-blocking, was es ideal für I/O-intensive Anwendungen macht. Es enthält auch den Node Package Manager (NPM) - ein riesiges Repository von JavaScript-Paketen, das die Wiederverwendung von Code erleichtert.

5.3 TypeScript in Browser und Node.js

TypeScript kann sowohl im Browser als auch mit Node.js verwendet werden. Da es jedoch nicht nativ in Laufzeitumgebungen ausgeführt wird, muss TypeScript-Code zuerst in JavaScript kompiliert werden, bevor er ausgeführt werden kann. Dies kann durch den TypeScript-Compiler oder durch Build-Tools wie Webpack erfolgen. Der kompilierte JavaScript-Code kann dann in jeder JavaScript-Laufzeitumgebung ausgeführt werden.

In Bezug auf die Typsicherheit während der Laufzeit ist zu beachten, dass die Typinformationen in TypeScript zur Kompilierzeit verwendet werden und nicht in die Laufzeit übertragen werden. Daher bietet TypeScript keine Laufzeit-Typsicherheit. Es gibt jedoch Tools wie io-ts oder runtypes, die zur Laufzeit Typsicherheit bieten, wenn sie benötigt wird.