Deno
JavaScript
TypeScript
Runtime
Segurança
Permissões
Deploy
CLI
Modules
Web APIs

Einführung in Deno: Praktischer Leitfaden für die moderne Entwicklung

Deno, erstellt von Ryan Dahl (dem gleichen Schöpfer von Node.js), kam als sichere und moderne Alternative zur traditionellen JavaScript-Laufzeitumgebung auf den Markt.

Einführung in Deno: Praktischer Leitfaden für die moderne Entwicklung

Deno, erstellt von Ryan Dahl (dem gleichen Schöpfer von Node.js), kam als sichere und moderne Alternative zur traditionellen JavaScript-Laufzeitumgebung auf den Markt. Deno wurde 2020 eingeführt und bietet native Unterstützung für TypeScript, ein restriktives Berechtigungsmodell und eine Reihe integrierter Tools (Formatter, Linter, Test Runner).

Warum Deno wählen?

  • Standardmäßige Sicherheit, der Prozess hat keinen Zugriff auf Dateien, Netzwerk oder Umgebung, ohne dass der Entwickler dies ausdrücklich gewährt.
  • Native Unterstützung für TypeScript, macht externe Compiler überflüssig.
  • ES-M-Module, Importe über URLs vereinfachen das Abhängigkeitsmanagement.
  • Integrierte Tools, deno fmt, deno lint und deno test werden vorgefertigt geliefert, wodurch die Abhängigkeit von externen Paketen verringert wird.

Schnelle Installation

curl -fsSL https://deno.land/x/install/install.sh | sh ## ou via Homebrew brew install deno

Das Skript fügt die Binärdatei zu $PATH hinzu.

Struktur eines Deno-Projekts

Ein typisches Deno-Projekt sorgt für eine schlanke Organisation. Im Stammverzeichnis befinden sich deno.json, das Berechtigungen, Import-Map- und Lint-Optionen definiert, und README.md. Der Quellcode befindet sich im Verzeichnis src/, mit dem Einstiegspunkt bei main.ts und den Hilfsmodulen in Dateien wie utils.ts. Die Tests sind in tests/ isoliert und folgen der Namenskonvention mit einem Suffix _test.ts, wie z. B. main_test.ts.

Berechtigungen, das Herzstück der Sicherheit

Wenn Sie ein Skript ausführen, müssen Sie angeben, auf welche Ressourcen es zugreifen kann:

ErlaubnisBeschreibung
--allow-readDateien oder Verzeichnisse lesen.
--allow-writeSchreiben in Dateien oder Verzeichnisse.
--allow-netNetzwerkverbindungen (HTTP, TCP, UDP).
--allow-envZugriff auf Umgebungsvariablen.
--allow-runAusführung von Teilprozessen.
--allow-ffiFremdfunktionsschnittstelle (C).

Beispiel für eine sichere Ausführung

deno run --allow-net src/main.ts

Das Skript kann HTTP-Anfragen stellen, aber keine lokalen Dateien lesen.

ES-M-Module über URL

Mit Deno können Sie direkt von öffentlichen URLs importieren:

import { serve } from "https://deno.land/std@0.203.0/http/server.ts";

Das Modul wird in ~/.deno zwischengespeichert und kann per Tag versioniert werden.

Erstellen eines einfachen HTTP-Servers

import { serve } from "https://deno.land/std@0.203.0/http/server.ts"; const handler = (request: Request): Response => { const url = new URL(request.url); if (url.pathname === "/") { return new Response("Olá Deno!", { status: 200 }); } return new Response("Not Found", { status: 404 }); }; serve(handler, { port: 8000 });

Der obige Code erstellt einen Server, der im Stammverzeichnis Olá Deno! antwortet.

Integrierte Tests

Deno enthält einen leichten Testläufer:

denon test --allow-net tests/main_test.ts

Der Test kann assertEquals aus der Standardbibliothek verwenden.

Testbeispiel (3 Zeilen)

import { assertEquals } from "https://deno.land/std@0.203.0/testing/asserts.ts"; Deno.test("soma", () => assertEquals(2 + 2, 4));

In der Produktion bereitstellen

  • Docker, offizielles Image denoland/deno vereinfacht die Bereitstellung.
FROM denoland/deno:alpine-1.38.0 WORKDIR /app COPY . . RUN deno cache src/main.ts EXPOSE 8000 CMD ["run", "--allow-net", "src/main.ts"]
  • Edge, Deno Deploy (Dienst serverlos) akzeptiert Skripte direkt über URL.
  • CI/CD, GitHub Actions mit deno lint && deno test && deno fmt --check garantieren Qualität.

Gute Sicherheitspraktiken

  1. Mindestberechtigungen, gewähren Sie nur das Notwendige (--allow-read=./data).
  2. Datei sperren, verwenden Sie deno lock, um Modulversionen zu sperren.
  3. Abhängigkeitsprüfung: Überprüfen Sie externe URLs, bevor Sie ihnen vertrauen.
  4. Schwachstellenscan, Tools wie trivy können das Docker-Image analysieren.

Kurze Checkliste zum Starten eines Deno-Projekts

  • Installieren Sie Deno (Curl oder Brew).
  • Erstellen Sie deno.json mit minimalen Berechtigungen.
  • Strukturverzeichnisse (src, tests).
  • Schreiben Sie Code mithilfe von Importen über URL.
  • Unit-Tests hinzufügen.
  • [] CI konfigurieren (lint, test, fmt).
  • Containerisieren Sie mit Docker oder verwenden Sie Deno Deploy.
  • Überprüfen Sie die Berechtigungen vor der Bereitstellung.

Fazit

Deno bietet eine sichere, moderne und produktionsbereite Umgebung mit weniger externen Abhängigkeiten. Durch die Einführung restriktiver Berechtigungspraktiken, ES-M-Module und integrierter Tools können Entwickler die Bereitstellung robuster Anwendungen beschleunigen und einen hohen Sicherheitsstandard aufrechterhalten.


Welche Erfahrungen haben Sie mit Deno gemacht? Teilen Sie es in den Kommentaren!

Lesen Sie auch