Node.js mag gut etabliert sein, aber übersehen Sie nicht Deno, ein ähnliches Framework desselben Entwicklers.

Node.js ist ein langlebiges Framework, mit dem Sie serverseitigen Code in JavaScript schreiben können. Ursprünglich im Jahr 2009 veröffentlicht, hat das Framework in den letzten Jahren ein beträchtliches Wachstum und eine explosionsartige Nutzung erlebt.

Deno hat Unterschiede im Formatierungsstil, der Importsyntax und der Paketverwaltung, aber derselbe Ingenieur hat diese konkurrierenden Frameworks auf derselben Engine erstellt.

Heute existiert Deno lange genug, um sich einen Platz in den Stacks vieler Entwickler zu verdienen. Wenn Sie ein neues JavaScript-Projekt starten möchten, fragen Sie sich vielleicht, welches die richtige Wahl ist.

Knoten- und Deno-Funktionen

Fast neun Jahre nach der Veröffentlichung von Node kündigte sein Entwickler Ryan Dahl ein neues Projekt an: Deno. Wo Node früher die einzige Option für serverseitiges JavaScript war, hat uns Deno eine Alternative gegeben.

instagram viewer

Node.js und Deno sind sich in vielerlei Hinsicht ziemlich ähnlich. Die meisten Unterschiede zwischen den beiden treten unter der Haube auf. Während Node auf der V8-JavaScript-Engine läuft, läuft Deno über einer benutzerdefinierten Engine, die in Rust gebaut wurde, mit einem starken Fokus auf Leistung.

Die meisten der Hauptunterschiede zwischen den beiden basieren darauf, welche Funktionen jede Sprache unterstützt. Module, Linting, Typoskript und Paketverwaltung werden zwischen den beiden ganz unterschiedlich gehandhabt.

Modulimporte: CommonJS vs. ES

Node.js verwendet standardmäßig CommonJS-Module mit der require()-Syntax. Node erlaubt es Ihnen, dies zu ändern, indem Sie Ihre Konfigurationsdateien ändern, um stattdessen ECMAScript-Module mit der import()-Syntax zu verwenden, wenn sie möchten.

// Dies ist ein gültiger CommonJS-Modulimport in Node.js
Var _ = erfordern("lodash");

// Dies ist ein gültiger ECMAScript-Modulimport in Node.js
importieren _ aus'lodash';

Es besteht eine eingeschränkte Interoperabilität zwischen den beiden Arten des Ladens von ES-Modulen, wobei einige ECMAScript-Module mithilfe der require()-Syntax eingebunden werden können. Jeder Importtyp behandelt Module etwas anders, aber beide funktionieren in den meisten Fällen.

Auf diese Weise können Sie beim Erstellen eines Projekts Ihre bevorzugte Methode zum Einbeziehen externer Module auswählen.

Deno geht einen anderen Weg, wenn es darum geht, externe Module in ein Projekt einzubinden. Deno verwendet die include()-Syntax für alle Module, aber im Gegensatz zum Import von Node können in Deno importierte Module von jedem Ort stammen. Diese Standorte können sogar entfernte Content Delivery Networks (CDNs) umfassen.

// Dies ist eine gültige Import-Anweisung in Deno
importieren" https://deno.land/x/[email protected]/dist/lodash.js";

Auf diese Weise können Sie Abhängigkeiten von jedem Ort, lokal oder remote, importieren, was eine weitaus größere Flexibilität bietet. Wenn Sie lieber mit der traditionellen require-Syntax von Node.js arbeiten, können Sie als Workaround Ihre eigene polyfill require-Funktion in Deno schreiben.

Unterstützung für TypeScript-Code

TypeScript ist in den letzten Jahren immer beliebter geworden, und es gibt keine Anzeichen für eine baldige Verlangsamung. Es hat sich als äußerst erfolgreiches Unterfangen erwiesen, typsichere Codedynamik in JavaScript zu bringen.

Heutzutage ist das Einrichten eines neuen TypeScript-Projekts oder das Konvertieren eines vorhandenen Node.js-Projekts in TypeScript einfach, wenn auch etwas zeitaufwändig.

Das Hinzufügen von TypeScript-Unterstützung ist so populär geworden, dass die meisten modernen Frameworks jetzt eine Art von TypeScript-Unterstützung haben. Angular war wegweisend, mit sofort einsatzbereiter TypeScript-Unterstützung. Heute sogar React verfügt über Methoden zum Einrichten der TypeScript-Unterstützung.

Deno wurde mit TypeScript-Unterstützung entwickelt, um Ihre Produktivität zu steigern. Mit der sofort einsatzbereiten TypeScript-Unterstützung fehlt Deno sogar die minimale Einrichtung, die von Node.js benötigt wird, um mit der Entwicklung von typisiertem JavaScript-Code zu beginnen.

Wenn Sie TypeScript lieben, können Sie mit der Unterstützung von Deno schnell und einfach loslegen, aber möglicherweise vermissen Sie einige der Standardbibliotheken von Node.js. Während Deno eine schnellere Einrichtung bietet, kann Sie das Fehlen eines entwickelten Ökosystems in Ihrem Build-Prozess behindern.

Linting, um saubereren Code zu generieren

Node.js bietet eine große Auswahl an Linters, aus denen Sie auswählen können. Es gibt viele gut entwickelte Optionen, die Sie schnell und einfach installieren und konfigurieren können. Ähnlich wie bei TypeScript müssen Sie jedoch ein wenig Kleinarbeit leisten, um mit dem Linter Ihrer Wahl zu beginnen.

Deno hat bei der Codeformatierung einen etwas anderen Weg eingeschlagen und verfügt über eine eigene integrierte Linting-Lösung für .js-, .ts- und .md-Dateien. Wenn Sie den Befehl „deno fmt“ ausführen, werden alle Dateien im aktuellen Arbeitsverzeichnis automatisch formatiert.

Wenn Sie kein Fan des Standard-Linters sind, gibt es die Möglichkeit, das Formatierungssystem Ihrer Wahl zu installieren und auszuführen, genau wie Sie es mit Node tun würden. Das Wechseln von Systemen ist einfach, da der Linter von Deno über einen externen Befehl und nicht als Teil der Standard-Build-Pipeline ausgeführt wird.

Wenn Sie erwägen, den Linter von Deno gegen ein neues System auszutauschen, sollten Sie sich möglicher Kompatibilitätsprobleme bewusst sein und diese im Auge behalten. Die meisten JavaScript-Linters erfordern eine Installation von Node, um ausgeführt zu werden, auch wenn es nicht das System ist, auf dem das zu formatierende Projekt ausgeführt wird.

Paketverwaltung

Der Node Package Manager (npm) ist unter modernen Entwicklern sehr bekannt. Aufbauend auf dem Erfolg ähnlicher Systeme wie Python’s Pip und Ruby’s RubyGems gewann npm schnell an Popularität.

Anhaltende Bedenken führen zur Entwicklung konkurrierender Manager wie pNPm und Yarn. Es gibt einige Situationen, in denen Sie sich vielleicht sogar für die Installation und Verwendung entscheiden mehrere Paketmanager mit Node.

Wenn Sie sich heute für die Entwicklung in Node.js entscheiden, haben Sie bei der Paketverwaltung die Qual der Wahl. Node verfügt über ein florierendes Ökosystem mit zahlreichen Optionen für die Installation von Paketen. Derzeit befinden sich über 1,3 Millionen im Hauptregister von npm.

Mit Npm können Sie Ihre eigenen Pakete veröffentlichen, was zu einer erstaunlich großen Bibliothek führt.

Deno hat bei der Paketverwaltung einen ganz anderen Ansatz gewählt. Es hat und benötigt kein Paketverwaltungssystem. Stattdessen erlaubt Deno den direkten Import externer Bibliotheken nicht nur vom System des Entwicklers, sondern von jedem Ort, der HTTP-Anfragen akzeptiert.

Auf diese Weise können Sie Bibliotheken aus dem Deno-Repository oder einem beliebigen CDN online direkt aus ihrer Codebasis importieren.

Die offizielle Paketregistrierung von Deno ist nicht so ausgereift wie die von Node, dank des fast neunjährigen Vorsprungs von Node. Die Möglichkeit, Bibliotheken von überall her zu importieren, bewahrt Sie davor, unter den Folgen eines Ökosystems zu leiden, das noch nicht die Chance hatte, seine volle Größe zu erreichen.

Community-Beteiligung an Node und Deno

Ursprünglich im Jahr 2009 von Ryan Dahl veröffentlicht, hatte Node viel Zeit, um sich an der Entwickler-Community zu beteiligen. Mit vielen Early Adopters und einer beträchtlichen Bibliothek von Paketen, die in seinem offiziellen Repository gespeichert sind und Ihnen zur Verfügung stehen, hat die Öffentlichkeit beim Wachstum von Node.js viel zu sagen.

Die Plattform selbst ist vollständig Open Source und wird von der OpenJS Foundation und vielen Mitwirkenden gepflegt.

Deno wurde 2018 veröffentlicht, fast 9 Jahre nach Node. Es wurde hauptsächlich von Ryan Dahl entwickelt, um Bedenken und Bedauern auszuräumen, die er bei seiner Implementierung von Node hatte. Heute ist Deno auch Open Source unter der MIT-Lizenz.

Mit vielen Mitwirkenden und einem wachsenden eigenen Repository hat Deno großes Interesse in der Community festgestellt.

Leistungsbedenken der beiden Frameworks

Für Programmierer, die an den relativen Leistungsunterschieden zwischen den beiden Frameworks interessiert sind, gibt es kaum einen Unterschied zwischen den beiden. Der in Rust geschriebene angepasste Motor von Deno überlagert ein Kerngerüst, das immer noch der V8-Motor ist. Letztlich sind sowohl Deno als auch Node leistungstechnisch in fast allen Fällen vergleichbar.

Dies scheint unabhängig davon der Fall zu sein, ob der resultierende Code auf dem Server oder dem Client ausgeführt wird. Da die Leistungserträge bei der Entscheidung nicht berücksichtigt werden, können Sie den Rahmen wählen, mit dem Sie sich am wohlsten fühlen.

Ryan Dahl, der Schöpfer beider Frameworks, führte eine Reihe von Gründen für seine Entwicklung von Deno an. Während er mehrere Faktoren erwähnte, von der fehlerhaften Integration von Versprechen in viele APIs bis hin zu seinem gewählten Build-System, war die Leistung kein Teil des Prozesses.

Node vs. Deno: Was ist die richtige Wahl?

Unter der Haube sind sowohl Node.js als auch Deno bemerkenswert ähnliche Frameworks. Beide führen JavaScript mit der V8-Engine mit ähnlicher Leistung und ähnlichen Fähigkeiten aus. Obwohl es einige Unterschiede in der Syntax, der Paketverwaltung und der integrierten Unterstützung gibt, hängt Ihre Wahl, welche Sie verwenden möchten, weitgehend von Ihren Vorlieben ab.

Node verfügt über ein erstaunlich großes Ökosystem, aber Deno ermöglicht es Ihnen, Ihre Abhängigkeiten aus jeder Quelle zu beziehen. Letztendlich müssen Sie Ihren eigenen Entwicklungsstil genau unter die Lupe nehmen und bestimmen, welche Plattform für Sie besser geeignet ist.