© Herschel Hoffmeyer/Shutterstock.com
Run, Deno, Run - Teil 1

Was spricht für Deno?


Deno [1] ist eine zukunftsweisende Laufzeitumgebung für JavaScript und TypeScript. Ryan Dahl, einer der Entwickler von Node.js, veröffentlichte die erste stabile Deno-Version im Juni 2020. Er verbessert mit Deno Implementierungen, die er als Probleme in Node.js ansieht, und die er aus heutiger Sicht damals gerne anders umgesetzt hätte.

Ryan Dahl veröffentlichte Deno als Ergänzung zum JavaScript-Ökosystem. Als er die Laufzeitumgebung zum ersten Mal auf einer Konferenz ankündigte, sprach er vor allem über Fehler in Node.js, dem Konkurrenten, den er ebenfalls mitentwickelt hat. Der Vortrag [2] hat überdies nicht nur Technisches, sondern Menschliches zum Thema. Mittlerweile ist Node.js für das JavaScript-Ökosystem unverzichtbar: Die Laufzeitumgebung wird von Millionen von Menschen verwendet.

Dennoch fühlt sich Ryan Dahl bei Entscheidungen, die damals getroffen wurden, heute eher unwohl. Mit Deno will er genau an diesen Stellen nun Abhilfe schaffen [3]. Er nutzte beim Design seine Erfahrung und vermied Designfehler von Node.js, was das brandneue Deno zu einer eindrucksvollen Laufzeitumgebung für sicheres serverseitiges JavaScript und TypeScript macht. Implementiert wird es von der V8 JavaScript Engine Rust und TypeScript.

  • Programmiersprachen: An JavaScript und TypeScript gibt es nur wenig auszusetzen. Ob Sie Ihre Deno-Anwendung mit der einen oder der anderen Sprache schreiben, ist nur eine Dateierweiterung von Ihnen entfernt. Da TypeScript immer beliebter wird, ist Deno mit erstklassiger TypeScript-Unterstützung die richtige Antwort auf diesen Trend.

  • Kompatibilität: Deno zielt auf Webkompatibilität ab, eine Anwendung funktioniert innerhalb von Deno und gleichzeitig in einem Browser. Es handelt sich um eine ausführbare JavaScript- oder TypeScript-Datei, die nicht von der Umgebung abhängig ist. Dank dieser Kompatibilität und mit Hilfe von modernen JavaScript- und TypeScript-Funktionen ist Deno recht zukunftssicher.

  • Sicherheit: Deno ist standardmäßig restriktiv. Es findet kein Datei-, Netzwerk- oder Umgebungszugriff statt, der nicht explizit vom Entwickler freigeben wird. Das schützt vor einer böswilligen Verwendung von Deno-Skripten.

  • Standardbibliothek: Deno verfügt über eine Standardbibliothek. Das bedeutet, dass Deno einen größeren Einfluss hat als Node.js. Denn: Deno bietet neben JavaScript viele interne Funktionen. Darüber hinaus verfügt Deno über integrierte Tools, die das Leben und die Arbeit eines Entwicklers vereinfachen und verbessern.

In den folgenden Abschnitten werde ich auf jeden der genannten Punkte detailliert eingehen. Gleichzeitig implementiere ich mit Ihnen eine kleine Deno-Anwendung – Schritt für Schritt und von Grund auf neu. Darauf aufbauend werden wir mit Deno eine echte Webanwendung weiterentwickeln. Wenn Sie danach zum Deno-Fan geworden sind, können Sie auf GitHub Vorlagen [4] für Sticker bekommen und sie auf Stickermule [5] zur Laptopzierde anfertigen lassen.

Die Deno-Installation unter MacOS, Windows und Linux

Die Einrichtung einer Deno-Anwendung variiert je nach Betriebssystem und Arbeitsumgebung leicht. Ich verwende Homebrew unter macOS, um Programme auf meinem Computer zu verwalten. Das ist natürlich keine Voraussetzung. Sie finden den passenden Installationsbefehl für Ihre Arbeitsumgebung in der folgenden Liste, die von der Deno-Website stammt. Rufen Sie den Befehl in einem integrierten Terminal oder einer Befehlszeile auf:

  • Shell (Mac, Linux): curl -fsSL https://deno.land/x/install/install.sh | sh

  • PowerShell (Windows): iwr https://deno.land/x/install/install.ps1 -useb | iex

  • Homebrew (Mac): brew install deno

  • Chocolatey (Windows): choco install deno

  • Scoop (Windows): scoop install deno

  • Installieren Sie Deno mit Hilfe der Paketverwaltungssoftware Cargo: cargo install deno

Überprüfen Sie, ob Deno korrekt installiert ist, indem Sie sich die Versionsnummer über die Befehlszeile ausgeben lassen. Das folgende Beispiel zeigt Ihnen die Ausgabe des Kommandos bei der ersten stabilen Veröffentlichung deno 1.0.0. Bitte arbeiten Sie immer mit der aktuellsten Deno-Version. Verwenden Sie den Befehl deno upgrade, um die Deno-Version zu aktualisieren und deno --Version zur Ausgabe der installierten Version:

deno --version -> deno 1.0.0

Rufen Sie als Nächstes eine Deno-Anwendung auf, um zu überprüfen, ob Deno auf Ihrem Computer korrekt arbeitet. Verwenden Sie zu Beginn der Einfachheit halber ein fertiges Programm:

deno run https://deno.land/std/examples/welcome.ts -> Welcome to Deno

Diese Deno-Anwendung gibt den Text „Welcome to Deno“ über die Befehlszeile aus. Mehr passiert nicht. Sie zeigt Ihnen nebenbei, wie eine Deno-Anwendung von einer Remotequelle aufgerufen wird. Dabei wird diese im laufenden Betrieb heruntergeladen und kompiliert. Falls Sie beim Aufrufen der Beispielanwendung oder bei der Installation von Deno Probleme haben, finden Sie weitere Informationen auf der offiziellen Website von Deno [6], [7].

Hallo Deno

Es hat seine Vorteile, wenn es auch verpönt ist: Jedes Mal, wenn wir als Programmierer etwas Neues lernen, fangen wir mit dem üblichen Beispiel „Hallo Welt“ an. Schreiben wir gemeinsam die erste „Hallo Welt“-Anwendung mit Deno. Legen Sie dazu über die Befehlszeile ein Verzeichnis für Ihr Deno-Projekt an, navigieren Sie danach in dieses Projekt und erstellen dort eine neue Datei. Ich habe das Verzeichnis deno-project und die Datei index.js genannt. Wählen Sie eigene Namen, wenn Ihnen meine zu einfallslos sind:

mkdir deno-project cd deno-project touch index.js

Öffnen Sie die neu erstellte Datei in einem Editor oder einer IDE. Fügen Sie die folgende Zeile ein und speichern sie:

console.log('Hallo Deno');

Rufen Sie anschließend die Deno-Anwendung über die Befehlszeile auf. Verwenden Sie dazu die folgende Anweisung – denken Sie daran, diese anzupassen, falls Sie einen anderen Namen für die Datei gewählt haben:

deno run index.js -> Hallo Deno

Voila! Ihr erstes Deno-Programm ist fertig. Sie haben einen Projektordner angelegt, eine JavaScript-Datei für die Implementierungsdetails erstellt und über Deno in der Befehlszeile aufgerufen. Mehr ist nicht erforderlich. Weitere Projekte für Deno-Einsteiger gibt es auf der offiziellen Homepage [8], wertvolle Tipps und Informationen über den offiziellen Twitter-Account [9].

Berechtigungen in Deno

In den folgenden Abschnitten entwickeln wir die „Hallo Welt“-Deno-Anwendung weiter. Zunächst sehen wir uns aber die Berechtigungen genauer an, denn Sicherheit spielt in Deno eine große Rolle. Verdeutlichen wir uns dieses Thema anhand eines Beispiels.

Wenn Sie sich wie ich über technische Themen auf dem Laufenden halten, kennen Sie Hacker News [10]. Ich informiere mich jeden Morgen auf dieser Website über die neuesten technischen Nachrichten. Darüber hinaus gibt es ein API für die Seite, das ich gerne in meinen Tutorials als Beispiel nutze. Wir werden das API hier ebenfalls verwenden, um Daten abzurufen. Wenn Sie das Hacker News API [11] durchsuchen, nutzen Sie den folgenden URL, um Texte zu einem Thema anzufordern – anstelle der drei Punkte steht das Suchwort:

http://hn.algolia.com/api/v1/search?query=...

Wir werden diesen URL im Deno-Projekt in der Datei index.js verwenden, um Hacker-Nachrichten über JavaScript abzurufen:

const url = 'http://hn.algolia.com/api/v1/search?query=javascript';

In Deno ist es möglich, über das fetch API Netzwerkanfragen abzusetzen – so wie im Browser. Verwenden wir also im nächsten Beispiel den URL im fetch API von Deno. Es führt eine HTTP-GET-Anforderung aus und gibt ein JavaScript-Promise-Objekt zurück. Wandeln Sie es in JSON um und geben das Ergebnis aus:

const url = 'http://hn.algolia.com/api/v1/search?query=javascript'; fetch(url) .then((result) => result.json()) .then((result) => console.log(result.hits));

Wenn Sie JavaScript in Webanwendungen nutzen, erkennen Sie, dass wir in der Deno-A...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Gewinner-Teams

Wir bieten Lizenz-Lösungen für Teams jeder Größe: Finden Sie heraus, welche Lösung am besten zu Ihnen passt.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang