Code Monkey home page Code Monkey logo

javascript-linuxwochen-2022's Introduction

JavaScript Linuxwochen 2022

Die ganze Welt im Browser

Visual Studio Code – der (Lieblings-)Editor ist immer dabei

  1. Ein Repository in Github öffnen
  2. Punkt (.) eingeben

https://github.dev/

StackBlitz – Darf es ein bisschen mehr sein?

Die Entwicklung von Webapplikationen braucht Werkzeuge. Die meisten stehen als NPM-Pakete zur Verfügung. Mit StackBlitz kann man diese im Browser nutzen.

  1. StackBlitz öffnen
  2. Beispielprojekt Express unter Backend öffnen
  3. Import von express in package.json zeigen
  4. index.js anpassen
  5. Im Terminal Applikation mit npm start neu starten

https://stackblitz.com/

Die Webcontainer von StackBlitz erlauben die Ausführung von Node.js im Browser.

https://blog.stackblitz.com/posts/introducing-webcontainers/

Gitpod – Und jetzt auch im Container

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.

  1. Öffnen des Repositories https://github.com/gitpod-io/template-typescript-deno
  2. Klick auf Open in Gitpod
  3. Zeigen von .gitpod.yml und .gitpod.Dockerfile

https://gitpod.io

Der Sprung auf die Kommandozeile

Deno – Node.js reloaded

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.

  1. Öffnen des Repositories https://github.com/gitpod-io/template-typescript-deno
  2. Klick auf Open in Gitpod
  3. Zeigen der Demo
  4. Verwendung von deno auf der Kommandozeile
    1. Math.random()
    2. await fetch('https://www.fh-burgenland.at')

https://deno.land/

Die "Rust"ifikation von JavaScript

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.

zx – die Verschmelzung von JavaScript und Bash

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.

  1. Workspace in Gitpod öffnen
  2. Imstallation von zx
    npm i -g zx
    
  3. Erzeugen einer neuen Datei test-zx.mjs mit dem Inhalt
    #!/usr/bin/env zx
    
  4. Ausführungsrechte setzen
    chmod a+x test-zx.mjs
    
  5. 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}`;

https://github.com/google/zx

TypeScript: Was tut sich da?

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.

https://github.com/tc39/proposal-type-annotations

javascript-linuxwochen-2022's People

Contributors

fknipp avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.