Lernen Sie Deno kennen und gehen Sie über Node.js hinaus
Veröffentlicht: 2023-04-20Obwohl Node.js mit Abstand die am häufigsten verwendete serverseitige JavaScript-Laufzeit ist, haben alternative Laufzeiten wie Deno und Bun Aufmerksamkeit erregt, da sie versuchen, das Node.js-Konzept zu verbessern.
Deno, die beliebtere der beiden neueren Laufzeiten, behebt einige Sicherheitsprobleme, die Node.js innewohnen, und bietet eine umfassendere Unterstützung für Technologien wie TypeScript und WebAssembly.
In diesem Artikel lernen Sie die Grundlagen von Deno kennen, erfahren, wie es mit Node.js und Bun verglichen wird, und folgen einer praktischen Demonstration, die Deno zum Erstellen eines einfachen HTTP-Webservers verwendet.
Was ist Deno?
Als sich Entwickler mit JavaScript vertraut machten, sahen sie dessen Potenzial für die Programmierung auf lokalen Rechnern. Also erstellten sie serverseitige Laufzeiten – Umgebungen, die es ermöglichen, JavaScript-Code auf Maschinen auszuführen, ohne einen Browser zu verwenden.
Ryan Dahl hat zu diesem Zweck Node.js entwickelt und später Deno erstellt, um einige der Probleme zu lösen, auf die er beim ursprünglichen Node.js-Design gestoßen ist. Einige bemerkenswerte Mängel sind die Abhängigkeit von einem zentralisierten Paketmanager wie npm, das Fehlen einer Standardbibliothek und lasche Standardsicherheitseinstellungen.
Zu den Hauptvorteilen von Deno gehören die folgenden:
- Sicherheit standardmäßig – Der Benutzer muss dem Code explizit die Berechtigung erteilen, auf das Netzwerk, das Dateisystem oder die Umgebung zuzugreifen.
- Integrierte Unterstützung für TypeScript und WebAssembly – Das Ausführen von TypeScript- und WebAssembly-Programmen in Deno ist so einfach wie das Ausführen von JavaScript-Programmen. Die Laufzeit kompiliert die Sprachen genauso wie JavaScript.
- Ein dezentraler Paketmanager – Anstatt sich auf ein Paket-Repository wie npm oder den Paketmanager von Bun zu verlassen, kann Deno Code direkt aus URLs importieren. Diese Funktion bedeutet, dass Sie Abhängigkeiten von überall laden können, wo sie gehostet werden, einschließlich Ihres GitHub-Repositorys, -Servers oder -CDN. Deno bietet auch einen Skript-Hosting-Service für einen noch einfacheren Zugriff.
- Einhaltung von Webstandards – Deno zielt darauf ab, denselben APIs wie Browser zu folgen, was bedeutet, dass Code, der für Browser geschrieben wurde, leicht in die Laufzeit zu übersetzen ist.
Große Unternehmen und große Branchenakteure wie Slack, Netlify und Supabase haben Deno eingeführt, aber seine Akzeptanz unter Webentwicklern war weniger verbreitet. Laut der Stack Overflow-Umfrage von 2022 verwendeten nur 1,47 % der professionellen Entwickler, die an der Umfrage teilgenommen haben, Deno, während 46,31 % angaben, Node.js zu verwenden.
Was macht Deno?
Wie jede JavaScript-Laufzeit ermöglicht Deno Entwicklern, JavaScript serverseitig auszuführen. Infolgedessen können Sie Deno verwenden, um eine Vielzahl von Programmieraufgaben zu erledigen.
Deno zeichnet sich am besten bei Aufgaben wie der Entwicklung von Serveranwendungen aus, die auf webbasierte Benutzeranfragen reagieren. Wenn Sie beispielsweise einen Online-Buchladen erstellen, könnten Sie mit Deno eine App erstellen, die Informationen aus einer PostgreSQL-Datenbank entnimmt, die Seite erstellt, die der Benutzer anzeigen möchte, und sie zum Rendern an den Browser sendet.
Sie können Deno auch für Programmieraufgaben auf niedrigerer Ebene verwenden, z. B. um ein Befehlszeilentool zu erstellen, um Ihre To-Do-Aufgaben über das Terminal zu verwalten. Mit anderen Worten, Sie können Deno verwenden, um die gleichen Ziele zu erreichen, die Sie mit Sprachen wie Python oder Ruby erreichen würden.
Deno gegen Node
Deno zielt darauf ab, eine Verbesserung gegenüber Node.js zu sein, und erfüllt dieses Versprechen in mehreren Schlüsselbereichen. Deno verbessert die Sicherheit, indem es differenziertere Zugriffskonfigurationen für verschiedene Codemodule ermöglicht. Es konzentriert sich auch auf die Einhaltung von Webstandard-APIs, die es Entwicklern ermöglichen, denselben Code sowohl auf der Browser- als auch auf der Serverseite zu verwenden.
Für Teams, die an serverseitigen JavaScript-Projekten arbeiten, ist Deno zu einer praktikablen Alternative zu Node geworden. Und obwohl ihre ähnliche Funktionalität einige Entwickler davon überzeugt hat, dass Deno Node.js ersetzen könnte, ist diese Möglichkeit aus einigen wichtigen Gründen unwahrscheinlich.
Node.js ist die beliebteste JavaScript-Laufzeitumgebung und hat ein riesiges Ökosystem vorgefertigter Pakete und eine große, aktive Benutzergemeinschaft angehäuft. Diese unschätzbaren Ressourcen tragen dazu bei, dass Node.js eine äußerst attraktive Laufzeit bleibt.
Im Gegensatz dazu ist Deno neu: Die Version 1.0 wurde im Mai 2020 veröffentlicht, sodass relativ wenige Entwickler die Zeit hatten, sich damit zu beschäftigen. Das Erlernen eines neuen Tools verlängert die Entwicklungszeiten. Außerdem ist nicht klar, ob Deno vielen einfachen Projekten signifikante Vorteile bringen würde.
Wenn Sie jedoch eine Anwendung in einem Bereich erstellen, in dem Sicherheit von entscheidender Bedeutung ist, wie z. B. im Finanzwesen, könnten die Sicherheitsfunktionen von Deno einen Wechsel lohnenswert machen.
Deno gegen Brötchen
Der frühere Stripe-Ingenieur Jarred Sumner veröffentlichte Bun erstmals im Juli 2022 für Beta-Tests. Bun ist eine experimentellere Laufzeitumgebung als Deno und im Gegensatz zu Deno auf umfassende Abwärtskompatibilität mit Node.js ausgelegt.
Bun bietet auch eine blitzschnelle Leistung und übertrifft Node.js und Deno. Schlüsselfunktionen ermöglichen diese Funktionen:
- Eine bessere Engine – Anstelle der V8-JavaScript- und Web-Assembly-Engine von Google verwendet Bun den schnelleren und effizienteren JavaScriptCore als zugrunde liegende JavaScript-Engine.
- Mehr Codekontrolle – Bun ist in Zig geschrieben, einer Low-Level-Sprache, die mehr Kontrolle über die Codeausführung bietet als JavaScript.
- Fein abgestimmte Effizienz – Das Team, das an Bun arbeitet, priorisierte Profilerstellung, Benchmarking und Optimierung während der Entwicklung, um die Code-Effizienz sicherzustellen.
Bun ist so neu, dass es relativ wenig Community-Support gibt, der bei der Fehlerbehebung hilft. Trotzdem kann Bun zum Experimentieren Spaß machen. Teams, die speziell eine Leistungssteigerung benötigen, könnten Bun für ihre Projekte nützlich finden, aber die Webentwicklung priorisiert häufig andere Faktoren als die Leistung.
Erste Schritte mit Deno
Nachdem Sie nun ein wenig über Deno und dessen Vergleich mit anderen beliebten JavaScript-Laufzeiten gelernt haben, ist es an der Zeit, sich anzusehen, wie es funktioniert. In diesem Abschnitt erfahren Sie, wie Sie einen einfachen Server in Deno erstellen, der auf HTTP-Anfragen mit „Hallo vom Server!“ antwortet.
Deno installieren
Sie können Deno auf einem Computer als ausführbare Binärdatei installieren, indem Sie diese Installationsanweisungen aus der offiziellen Dokumentation verwenden. Unter macOS können Sie beispielsweise Deno mit dem Befehl brew install deno
installieren.
Eine andere Möglichkeit, mit Deno zu arbeiten, besteht darin, es wie folgt als npm-Paket zu installieren:
Erstellen Sie einen Ordner für Ihr Projekt (vielleicht deno_example ) und führen Sie darin den Befehl npm init
aus. (Sie können alle von init
vorgeschlagenen Standardoptionen akzeptieren, da es eine grundlegende package.json- Datei erstellt.)
Führen Sie nach der Initialisierung Ihrer Anwendung npm install deno-bin
, um das Deno-Binärpaket zu installieren. Jetzt können Sie die Datei package.json aktualisieren, um den Start der Anwendung mit npm start
zu ermöglichen. Fügen Sie die fettgedruckte Zeile unten zur Objekteigenschaft „scripts“ in der Standarddatei „package.json“ hinzu:
"scripts": { "start": "deno run --allow-net app.ts", "test": "echo \"Error: no test specified\" && exit 1" },
Dieser Skriptzusatz ermöglicht es Deno, das Modul app.ts mit Netzwerkrechten ( --allow-net
) auszuführen. Denken Sie daran, dass Sie bei der Arbeit mit Deno den Zugriff auf ein Netzwerk oder Dateisystem explizit zulassen müssen.
Jetzt können Sie das app.ts- Modul erstellen, das für das Abhören eines Ports und das Bedienen von Benutzeranforderungen verantwortlich ist.
Erstellen des App.ts-Moduls
Das Erstellen eines Basisservers in Deno ist extrem einfach. Erstellen Sie zunächst eine app.ts- Datei und fügen Sie den folgenden Code ein:
import { serve } from "https://deno.land/[email protected]/http/server.ts"; serve((_req) => new Response("Hello from the server!"), { port: 8000 });
Der Code verwendet die serve
Funktion aus der server.ts Deno library
die auf der offiziellen Deno.land-Website gespeichert ist. Dieser Code stellt auch einen serve
Funktionshandler für eingehende Anfragen bereit. Die Handler-Funktion antwortet auf jede Anfrage mit „Hallo vom Server!“
Die serve
Funktion akzeptiert auch optionale Parameter, wie z. B. die Portnummer, auf der Sie dienen möchten. Hier verwendet das Codebeispiel diese Parameter, um auf Port 8000 zu dienen.
Als nächstes starten Sie den Server, indem Sie npm start
ausführen. Dies sollte einen Server starten, der auf localhost:8000
lauscht und auf Anfragen mit einer Begrüßung antwortet.
Wenn Sie den Server zu einer vollwertigen API erweitern möchten, müssen Sie wahrscheinlich eine Datenbankkonnektivität hinzufügen. Das ist einfach, da die Deno-Community Treiber erstellt hat, die beliebte Datenbanken wie MariaDB/MySQL, PostgreSQL, MongoDB und mehr unterstützen.
abschneidetZusammenfassung
Die Laufzeiten reichen von gewöhnlich und zuverlässig bis zu sehr experimentell. Die Wahl des richtigen für Ihr Projekt hängt von Ihrem Projekt ab und davon, wie Ihre Laufzeit Ihnen helfen soll, Ihre Ziele zu erreichen.
Node.js funktioniert gut für die meisten Projekte. Es verfügt über ein großes Ökosystem und eine große Community, die bei einer Vielzahl von Fehlerbehebungsszenarien helfen kann.
Deno hat den Vorteil zusätzlicher Sicherheit und einer besseren Entwicklererfahrung. Gleichzeitig eignet es sich am besten für erfahrene Teams, sodass seine Vorteile den Zeit- und Arbeitsaufwand für das Erlernen einer ungewohnten Laufzeit überwiegen.
Obwohl Bun für die meisten professionellen Projekte zu experimentell ist, ist es schließlich eine einzigartige und unterhaltsame Laufzeit, die Sie für ein persönliches Projekt aufgreifen oder erweitern können.
Alles in allem bietet Deno ein Gleichgewicht zwischen den Vorteilen von Node.js und den experimentellen Möglichkeiten von Bun. Während Node.js für die meisten Projekte eine brauchbare Wahl ist, könnte Deno an der Spitze stehen, wenn es darum geht, wie sich die Webentwicklung in Zukunft entwickeln wird.
Übe in der Zwischenzeit deine Deno-Fähigkeiten, indem du dich für Kinstas Application Hosting Hobby Tier anmeldest – jetzt programmieren und später skalieren.