- Ein Repository in Github öffnen
- Punkt (.) eingeben
Die Entwicklung von Webapplikationen braucht Werkzeuge. Die meisten stehen als NPM-Pakete zur Verfügung. Mit StackBlitz kann man diese im Browser nutzen.
- StackBlitz öffnen
- Beispielprojekt Express unter Backend öffnen
- Import von express in package.json zeigen
- index.js anpassen
- Im Terminal Applikation mit
npm start
neu starten
Die Webcontainer von StackBlitz erlauben die Ausführung von Node.js im Browser.
https://blog.stackblitz.com/posts/introducing-webcontainers/
Wenn es mehr als NPMs, sondern diverse Binaries braucht, führt uns der Weg zu Container. Diese Methode ist älter als die Webcontainer bei StackBlitz, aber auch dort erfreut sich Visual Studio Code als Editor steigender Beliebtheit.
- Öffnen des Repositories https://github.com/gitpod-io/template-typescript-deno
- Klick auf Open in Gitpod
- Zeigen von .gitpod.yml und .gitpod.Dockerfile
10 Jahre nach der Präsentation von Node.js hat dessen Erfinder eine neue JavaSript-Runtime erstellt. Diese setzt zwar auch wieder auf Googles V8 auf, soll aber alle Fehler vermeiden, die bei Node passiert sind.
- Öffnen des Repositories https://github.com/gitpod-io/template-typescript-deno
- Klick auf Open in Gitpod
- Zeigen der Demo
- Verwendung von
deno
auf der KommandozeileMath.random()
await fetch('https://www.fh-burgenland.at')
Die JavaScript-Entwicklungswerkzeuge sind zumeist in JavaScript oder TypeScript erstellt:
- Bundler, die die Vielzahl von JavaScript-Dateien in eine überführen
- Transpiler, die JavaScript in JavaScript übersetzen, z. B. zur Unterstützung alternativer Syntaxen wie JSX oder Verwendung von in Entwicklung befindlichen JavaScript-Sprach-Features
- Minifier, die die erzeugten JavaScript-Dateien im Platzbedarf minimieren
- Linter, die den Quellcode analysieren und Verbesserungen vorschlagen
- Formatierer, die eine einheitliche Formatierung des Quellcodes sicherstellen
JavaScript ist dafür nicht die schnellste Technologie, gerade beim Bundling mit integriertem Tree-Shaking zum Entfernen nicht genutzter Funktionen, werden viele Schritte ausgeführt.
Daher werden diese Tools zur Verarbeitung von JavaScript-Dateien in anderen Programmiersprachen umgesetzt, was Geschwindigkeitssteigerungen mit Faktoren von 10 bis 100 bringt.
- Rust in Deno
- Rust in der Bibliothek swc, die beispielsweise von Parcel, Next.js, Deno verwendet wird
- Go für esbuild
Rust kann übrigens auch nach WebAssembly (WASM) kompilieren.
Die Bash ist sehr toll, aber irgendwann kommt man an ihre Grenzen, und der Wunsch nach einer leistungsfähigeren Programmiersprache wird laut. Google versucht diese Lücke mit zx zu schließen.
- Workspace in Gitpod öffnen
- Imstallation von zx
npm i -g zx
- Erzeugen einer neuen Datei test-zx.mjs mit dem Inhalt
#!/usr/bin/env zx
- Ausführungsrechte setzen
chmod a+x test-zx.mjs
- Ausführung der Datei mit
./test-zx.mjs
#!/usr/bin/env zx
// Aufruf eines Befehls
await $`ls`;
// Verarbeitung der Ausgabe
const process = await quiet($`ls`);
console.log(process.stdout.split("\n"));
// Escaping der Parameter
const ugly_filename = "abc $USER &";
await $`touch ${ugly_filename}`;
JavaScript ist eine schwach typisierte Sprache. Typisierung bringt aber Vorteile, z. B. die Typprüfung vor der Ausführung oder verbesserte Assistenten bei der Softwareentwicklung. TypeScript ist eine streng typisierte Sprache auf Basis von JavaScript. Es ist eine Übersetzung von TypeScript nach JavaScript erforderlich.
https://www.typescriptlang.org/
Jede JavaScript-Datei ist eine gültige TypeScript-Datei. Das erlaubt die Erweiterung von JavaSript um eine optionale Typisieren. Ein entsprechender Vorschlag liegt bereits auf Stage 1 vor.