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 lintunddeno testwerden 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
$PATHhinzu.
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:
| Erlaubnis | Beschreibung |
|---|---|
--allow-read | Dateien oder Verzeichnisse lesen. |
--allow-write | Schreiben in Dateien oder Verzeichnisse. |
--allow-net | Netzwerkverbindungen (HTTP, TCP, UDP). |
--allow-env | Zugriff auf Umgebungsvariablen. |
--allow-run | Ausführung von Teilprozessen. |
--allow-ffi | Fremdfunktionsschnittstelle (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
~/.denozwischengespeichert 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
assertEqualsaus 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/denovereinfacht 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 --checkgarantieren Qualität.
Gute Sicherheitspraktiken
- Mindestberechtigungen, gewähren Sie nur das Notwendige (
--allow-read=./data). - Datei sperren, verwenden Sie
deno lock, um Modulversionen zu sperren. - Abhängigkeitsprüfung: Überprüfen Sie externe URLs, bevor Sie ihnen vertrauen.
- Schwachstellenscan, Tools wie
trivykönnen das Docker-Image analysieren.
Kurze Checkliste zum Starten eines Deno-Projekts
- Installieren Sie Deno (Curl oder Brew).
- Erstellen Sie
deno.jsonmit 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
- TypeScript für Anwendungen: TypeScript-Entwicklungshandbuch
- Cloudflare Workers: Praktischer Leitfaden für serverloses Edge Computing
- Autorisierung und Berechtigungen in Anwendungen: Sichere Zugriffskontrolle
- Autorisierung und Berechtigungen – Best Practices-Grundlagen
- Advanced TypeScript: Beherrschung komplexer Typen, Generics und Utility-Typen
- Moderne Webentwicklung im Jahr 2025: Trends, Tools und innovative Strategien
