Veränderungen bei Deno im Jahr 2023
- Deno versteht
package.json-Dateien und kann eingebaute Node-Module wie node:fs und node:crypto über den node:-Specifier importieren.
- Die neue Webserver-API
Deno.serve wurde stabilisiert, und der HTTP-Durchsatz wurde im Jahresvergleich um etwa 73 % verbessert.
deno compile unterstützt nun Worker, dynamische Imports und npm-Module.
- Deno nutzt Web Streams (
ReadableStream und WriteableStream) sowie AbortController API-weit besser und verringert damit die Kluft zwischen Browser- und Server-seitiger Programmierung.
- Die Deno-Konfigurationsdatei
deno.json kann jetzt auch als Import Map verwendet werden, vereinfacht das Schema und ergänzt Glob-Unterstützung sowie eine nützliche Top-Level-Eigenschaft "exclude".
- Das Open-Source-Notebook-Tool Jupyter unterstützt Deno nun mit JavaScript und TypeScript.
- WebGPU wurde nach fast einem Jahr Entwicklungsarbeit zu Deno hinzugefügt.
- Deno's konfigurationsloses TypeScript bietet dank deutlicher Verbesserungen bei LSP- und VS-Code-Integration eine bessere Editor-Integration.
- Fresh, das Deno-basierte Web-Framework, wurde um Funktionen wie Tailwind-Unterstützung, Partials und Layout-Dateien erweitert.
- Deno Deploy wurde mit global verteilten Bausteinen wie Deno KV, Queues und Cron leistungsfähiger.
- Es wurde Self-Service-Subhosting eingeführt, damit die Plattform nicht vertrauenswürdiges Multi-Tenant-JavaScript bereitstellen und ausführen kann.
Verbesserte Kompatibilität mit Node und npm
- Deno erweitert seine Kompatibilität mit dem Node-Ökosystem, einschließlich eingebauter Node-Module wie
node:fs und node:child_process, über den node:-Specifier.
- Für einen nahtlosen Wechsel von Node zu Deno wurden mehrere neue Funktionen eingeführt:
- Mit dem Flag
--unstable-byonm kann innerhalb von Deno der bevorzugte npm-Paketmanager verwendet werden.
- Das Flag
--unstable-sloppy-imports lockert die Strenge bei Modul-Imports und berücksichtigt verschiedene Coding-Stile und Praktiken.
- Das Flag
--unstable-unsafe-proto unterstützt Object.prototype.__proto__, auf das viele npm-Pakete angewiesen sind.
- Durch die Stabilisierung der Node-API können npm-Pakete, die von der Node-API abhängen, nun ohne das Flag
--unstable verwendet werden, wodurch der unterstützte Umfang wächst.
Einfachere und schnellere Webserver mit Deno.serve()
- Die Funktion
Deno.serve() wurde eingeführt und stabilisiert, sodass Entwickler mit minimalem Code einen Server starten können.
- Durch gezielte Optimierungen an Core-Bibliotheken und Event-Loop-Mechanismen wurde die Performance deutlich verbessert.
- Deno's HTTP-Durchsatz stieg in Benchmark-Tests mit einer einfachen Standardkonfiguration für einen "Hello, world"-Server sichtbar an.
Flexibleres deno.json
- Deno verfolgt das Prinzip, ohne komplexe Konfiguration nutzbar zu sein, und verbessert die Konfigurationsdatei
deno.json kontinuierlich, um die einfache Nutzung zu erhalten:
deno.json kann nun auch als Import Map verwendet werden.
deno fmt unterstützt Semikolons und bietet damit mehr Flexibilität beim Code-Stil.
- Die Integration mit
package.json erleichtert den Wechsel zwischen Node- und Deno-Umgebungen.
- Die Struktur von
deno.json wurde vereinfacht, damit Entwickler sich intuitiver darin zurechtfinden.
- Durch die Einführung von Glob-Mustern lassen sich Dateien und Verzeichnisse präziser ein- oder ausschließen.
Flüssigeres Entwicklungserlebnis mit LSP
- Die Integration des Language Server Protocol (LSP) in Deno bietet Funktionen wie präzises Springen zu Definitionen, umfassendes IntelliSense und nahtlose Code-Formatierung für TypeScript-Projekte.
- Es wurde viel Aufwand in die Verbesserung des LSP gesteckt, um das Coding in Deno flüssiger und intuitiver zu machen.
WebGPU
- WebGPU integriert moderne Technologie in Deno, mit der Entwickler die Leistung von GPU-Hardware direkt mit JavaScript nutzen können.
- WebGPU ist hinter dem Flag
--unstable-webgpu verfügbar und ein wichtiger Meilenstein für die Erweiterung der Fähigkeiten von Deno-Anwendungen.
Jupyter-Notebooks
- Das Open-Source-Notebook-Tool Jupyter unterstützt Deno nun mit JavaScript und TypeScript.
- Dadurch werden Data Science, Visualisierung und mehr mit modernem JavaScript, TypeScript und Web-Standard-APIs möglich.
Bemerkenswerte Open-Source-Rust-Crates
- Deno ist mit verschiedenen Open-Source-Projekten verbunden und trägt aktiv dazu bei, den Funktionsumfang von Deno zu erweitern und die Performance zu optimieren.
- In diesem Jahr hat Deno einige Rust-Crates veröffentlicht, die auch eigenständig nützlich sein können.
Fresh
- Fresh ist Deno's modernes Full-Stack-Web-Framework, das standardmäßig kein clientseitiges JavaScript ausliefert, und wird kontinuierlich verbessert, um die Nutzung zu vereinfachen und die Performance zu steigern.
Ausbau von Deno's Cloud-Geschäft
- Deno Subhosting wurde von einer Unterstützung für Netlifys Edge Functions und die E-Commerce-Shops von Deco.cx-Kunden zu einem eigenen Service weiterentwickelt und ist nun für alle kostenlos nutzbar.
- Mit der Einführung von Cloud-Bausteinen wie Deno KV, Queues und Cron wurden Fortschritte in Richtung der Vision erzielt, Webentwicklung grundlegend zu vereinfachen.
Deno 2
- Deno 2 soll eine verbesserte Runtime bieten, einschließlich spannender Ankündigungen zur besseren Kompatibilität mit Node und npm sowie zur Verwaltung und Optimierung von Projektabhängigkeiten.
Meinung von GN⁺:
- Wichtig ist, dass Deno die Kompatibilität mit Node.js deutlich verbessert und sich auf die Vereinfachung der Webentwicklung konzentriert. Das kann bestehenden Node.js-Entwicklern den Wechsel zu Deno erleichtern und die Verbreitung von Deno fördern.
- Die Integration moderner Funktionen wie WebGPU zeigt, dass Deno über eine reine Server-Side-Plattform hinauswächst und für ein breiteres Spektrum an Anwendungsentwicklung geeignet wird. Das kann besonders für Entwickler attraktiv sein, die High-Performance-Computing mit GPU-Unterstützung benötigen.
- Die Weiterentwicklung des Fresh-Frameworks und von Deno Deploy deutet darauf hin, dass Deno eine wichtige Rolle in der Full-Stack-Webentwicklung spielen kann, und stärkt Deno's Position als Cloud-basierter Service. Diese Entwicklungen erhöhen die Wahrscheinlichkeit, dass sich Deno als wichtiger Akteur der modernen Webentwicklung etabliert.
2 Kommentare
Hacker-News-Kommentare
pkg-Lösung von Node.js.deno-core-Crate sei sehr rudimentär und schwer einzubetten. Er hoffe, dass Deno in der Welt der JS-Tools zu einer „Plugin-Runtime“ werden könne, und erklärte, dass er derzeit in einem Rust-Hostprozess über stdio mit einem Node.js-Kindprozess kommuniziere.