//

Deno – Einführung & Entwicklung einer einfachen REST API

7.10.2020 | 3 Minuten Lesezeit

Was ist Deno?

Deno (ein Anagramm von „Node“ 🤯), ist eine JavaScript und TypeScript Runtime, die
seit Mai 2020 in der Version 1.0 verügbar ist. Deno wurde von Ryan Dahl, dem ursprünglichen Entwickler von Node.js, entwickelt und soll einige konzeptionelle
Einschränkungen und Mängel von Node.js beheben.

Deno ist Open-Source (MIT) in Rust programmiert, basiert auf der V8 JavaScript Engine und inkludiert einen
TypeScript Compiler. Dieser erlaubt es neben JavaScript auch direkt TypeScript Programme über die Kommandozeile auszuführen.

Was ist das besondere an Deno?

Deno soll einige bekannte Mängel von Node.js beheben. Dazu zählen unter anderem:

Ein schlecht konzipiertes Modulsystem mit einem stark zentralisiertem
Verteilungsmechanismus.

  • Deno setzt hier folgendermaßen an:
    • Deno verwendet ECMAScript Module (anstelle der bei Node.js üblichen
      CommonJS Module)
    • Deno Module können überall gehostet werden – ein zentrales Repository (wie
      bei Node.js das npm Registry) gibt es nicht. Module können direkt über
      ihre URL importiert werden und werden immer lokal gecached und kompiliert.
      Außerdem werden Module nicht auf neuere Versionen aktualisiert, außer wenn
      man das ausdrücklich angibt.

Viele veraltete Legacy-APIs, die aber weiterhin unterstützt werden
müssen.

  • Das macht Deno anders:
    • Module via require() zu importieren wird nicht unterstützt,
      außschließlich der ECMAScript Modul import Syntax wird
      unterstützt
    • Deno verwendet moderne ECMAScript-Funktionen in allem internen APIs und
      Standardbibliotheken. Alle asynchronen Funktionen nutzen Promises – eine
      auf Callbacks basierende API wie bei Node.js gibt es nicht.

Fehlende Berücksichtigung von Security-Aspekten.

  • Deno verhält sich hier anders, denn:
    • Standardmäßig dürfen Programme, die mit Deno ausgeführt werden, nicht auf
      die Festplatte, das Netzwerk, auf Unterprozesse oder auf
      Umgebungsvariablen zugreifen. Dies muss explizit über
      Kommandozeilenargumente erlaubt werden (z.B.: --allow-read,
      --allow-net=api.codecentric.com, etc.)
    • Bei unbehandelten Fehlern stürzt die Deno Runtime (im Gegensatz zu
      Node.js) immer direkt ab. Dadurch werden nicht vorhersehbare Ereignisse
      verhindert, die auftreten können, wenn ein Programm nach einem
      unbehandelten Fehlern weiterläuft.

Zudem soll Deno out-of-the-box eine sehr gute Developer-Experience bieten, u.A.
durch:

  • TypeScript Support
  • Eingebautes Tooling:
    • Unit Testing (deno test)
    • Code Formatting (deno fmt)
    • Linting (deno lint)
    • Dependency Checking (deno info)
  • Eingebauter live-reload File-Watcher (seit Deno 1.4):
    deno run --watch, muss aktuell zusätzlich noch mit der
    --unstable Flag ausgeführt werden, da das File-Watcher-Feature
    noch nicht stabil ist
  • Eingebautes Bundling (via deno bundle) um alle verwendeten
    Module und den eigenen Code in eine einzige JavaScript Datei zu bündeln

Projekt-Setup & Hello World

Doch genug der Theorie, wie startet man am besten mit der Deno Entwicklung?

  1. Deno installieren: Die Anleitungen dazu findet ihr auf der offiziellen
    Homepage von Deno
  2. Gehostetes „Hello-World“ Modul ausführen
    • Das „Hello-World“ Modul ist hier gehostet:
      https://deno.land/std@0.69.0/examples/welcome.ts
    • Tipp: clickt auf den Modul-Link, alle bei Deno-Land gehostete Module
      können auch direkt im Browser inspiziert werden!

    • Programm über die Kommandozeile ausführen:
    • deno run https://deno.land/std@0.69.0/examples/welcome.ts
      
    • Ergebnis:
    • 
      Download https://deno.land/std@0.69.0/examples/welcome.ts
      Check https://deno.land/std@0.69.0/examples/welcome.ts
      Welcome to Deno 🦕
      
  3. Eigenes "Hello-World" Modul ausführen
    • Legt eine hello.ts Datei an
    • Befüllt sie mit eurem Hello World Code, z.B.
    • console.log("Hello codecentric 👋");
      
    • Führt sie mit deno run hello.ts aus
    • Ergebnis:
    • 
      Check file:///path/to/file/hello.ts
      Hello codecentric 👋
      

Eine einfache REST API mit Deno & Oak

Um etwas über das Hello-World Beispiel hinaus einen Einblick in den aktuellen Entwicklungsstand von Deno zu bekommen, wollen wir in diesem Abschnitt eine sehr einfache REST API bauen. Hierzu nutzen wir das Framework oak . Oak ist ein Middleware-Framework für das in Deno inkludierte http Modul. Leser\*innen, die bereits mit Node.js und Express oder Koa gearbeitet haben, dürften sich im folgenden Code wie Zuhause fühlen 😉.
  • Zuerst installieren wir oak als dependency via npm install ..
  • Ach nein, halt! Da war ja was...
  • In Deno werden alle dependencies einfach in der TypeScript Datei, in der sie verwendet werden, direkt über eine URL importiert!
  • Wir legen uns also eine Datei app.ts an, und in diese kommt der folgende Code:

Beitrag teilen

Gefällt mir

1

//

Weitere Artikel in diesem Themenbereich

Entdecke spannende weiterführende Themen und lass dich von der codecentric Welt inspirieren.

//

Gemeinsam bessere Projekte umsetzen

Wir helfen Deinem Unternehmen

Du stehst vor einer großen IT-Herausforderung? Wir sorgen für eine maßgeschneiderte Unterstützung. Informiere dich jetzt.

Hilf uns, noch besser zu werden.

Wir sind immer auf der Suche nach neuen Talenten. Auch für dich ist die passende Stelle dabei.