Node.js est peut-être bien établi, mais ne négligez pas Deno, un framework similaire du même développeur.
Node.js est un framework de longue durée qui vous permet d'écrire du code côté serveur en JavaScript. Initialement publié en 2009, le framework a connu une croissance considérable et une explosion de son utilisation au cours des dernières années.
Deno a des différences dans le style de formatage, la syntaxe d'importation et la gestion des packages, mais le même ingénieur a construit ces frameworks concurrents sur le même moteur.
Aujourd'hui, Deno existe depuis assez longtemps pour gagner une place dans les piles de nombreux développeurs. Si vous cherchez à démarrer un nouveau projet JavaScript, vous vous demanderez peut-être quel est le bon choix.
Fonctionnalités de nœud et de Deno
Près de neuf ans après la sortie de Node, son développeur, Ryan Dahl, a annoncé un nouveau projet: Deno. Là où Node était autrefois la seule option pour JavaScript côté serveur, Deno nous a donné une alternative.
Node.js et Deno sont assez similaires à bien des égards. La majorité des différences entre les deux se produisent sous le capot. Là où Node s'exécute sur le moteur JavaScript V8, Deno s'exécute par-dessus un moteur écrit sur mesure construit en Rust avec un fort accent sur les performances.
La plupart des différences majeures entre les deux sont basées sur les fonctionnalités prises en charge par chaque langue. Les modules, le linting, le tapuscrit et la gestion des packages sont tous gérés de manière très différente entre les deux.
Importations de modules: CommonJS vs. ES
Node.js utilise les modules CommonJS par défaut avec la syntaxe require(). Node vous permet de changer cela en modifiant vos fichiers de configuration pour utiliser les modules ECMAScript avec la syntaxe import() à la place s'ils le souhaitent.
// Ceci est une importation de module CommonJS valide dans Node.js
var _ = exiger("Lodash");
// Ceci est une importation de module ECMAScript valide dans Node.js
importer _ depuis'lodash';
Il existe une interopérabilité limitée entre les deux types de chargement de modules ES, certains modules ECMAScript pouvant être inclus à l'aide de la syntaxe require(). Chaque type d'importation gère les modules légèrement différemment, mais l'un ou l'autre fonctionnera dans la majorité des cas.
Cela vous permet de choisir votre méthodologie préférée pour inclure des modules externes lors de la création d'un projet.
Deno adopte une approche différente lorsqu'il s'agit d'inclure des modules externes dans un projet. Deno utilise la syntaxe include() pour tous les modules, cependant, contrairement à l'importation de Node, les modules importés dans Deno peuvent provenir de n'importe quel emplacement. Ces emplacements peuvent même inclure des réseaux de diffusion de contenu à distance (CDN).
// Ceci est une déclaration d'importation valide dans Deno
importer" https://deno.land/x/[email protected]/dist/lodash.js";
Cela vous permet d'importer des dépendances depuis n'importe quel emplacement, local ou distant, offrant une flexibilité bien plus grande. Si vous préférez travailler avec la syntaxe traditionnelle requise de Node.js, vous pouvez écrire votre propre fonction requise polyfill dans Deno comme solution de contournement.
Prise en charge du code TypeScript
TypeScript a connu une croissance croissante en popularité au cours des dernières années, sans aucun signe de ralentissement de sitôt. Apporter une dynamique de code de type sécurisé à JavaScript s'est avéré être une entreprise extrêmement réussie.
Aujourd'hui, la configuration d'un nouveau projet TypeScript ou la conversion d'un projet Node.js existant en TypeScript est simple, même si elle prend un peu de temps.
L'ajout de la prise en charge de TypeScript est devenu suffisamment populaire pour que la plupart des frameworks modernes disposent désormais d'une certaine forme de prise en charge de TypeScript. Angular a ouvert la voie, avec un support TypeScript prêt à l'emploi. Aujourd'hui, même React a des méthodes pour configurer la prise en charge de TypeScript.
Deno a été conçu avec la prise en charge de TypeScript incluse pour vous aider à améliorer votre productivité. Avec la prise en charge de TypeScript prête à l'emploi, Deno ne dispose même pas de la configuration minimale requise par Node.js pour définir le développement de code JavaScript typé.
Si vous aimez TypeScript, vous pouvez démarrer rapidement et facilement avec le support de Deno, mais vous risquez de vous retrouver avec certaines des bibliothèques Node.js standard. Bien que Deno offre une configuration plus rapide, l'absence d'un écosystème développé peut vous gêner dans votre processus de construction.
Peluchage pour générer un code plus propre
Node.js propose une grande variété de linters parmi lesquels vous pouvez choisir. Il existe de nombreuses options bien développées que vous pouvez installer et configurer rapidement et facilement. Tout comme dans le cas de TypeScript, cependant, vous devrez faire un peu de travail préparatoire pour commencer avec le linter de votre choix.
Deno a emprunté une voie légèrement différente dans le formatage du code, avec sa propre solution de linting intégrée pour les fichiers .js, .ts et .md. L'exécution de la commande "deno fmt" formatera automatiquement tous les fichiers du répertoire de travail actuel.
Si vous n'êtes pas fan du linter par défaut, il existe une option pour installer et exécuter le système de formatage de votre choix, comme vous le feriez avec Node. Changer de système est simple car le linter de Deno s'exécute via une commande externe et non dans le cadre du pipeline de construction par défaut.
Si vous envisagez de remplacer le linter de Deno par un nouveau système, vous devez être conscient des problèmes de compatibilité potentiels et les garder à l'esprit. La plupart des linters JavaScript nécessiteront une installation de Node pour s'exécuter, même s'il ne s'agit pas du système sur lequel le projet en cours de formatage s'exécute.
Gestion des packages
Le gestionnaire de packages de nœuds (npm) est très connu des développeurs modernes. S'appuyant sur le succès de systèmes similaires tels que Python's Pip et Ruby's RubyGems, npm a rapidement gagné en popularité.
Les préoccupations persistantes conduisent au développement de gestionnaires concurrents, tels que pNPm et Yarn. Dans certaines situations, vous pouvez même choisir d'installer et d'utiliser plusieurs gestionnaires de packages avec Node.
Aujourd'hui, si vous choisissez de développer en Node.js, vous avez un peu l'embarras du choix en matière de gestion de packages. Node dispose d'un écosystème florissant avec de nombreuses options pour les packages à installer. Il y en a actuellement plus de 1,3 million dans le registre principal des npm.
Npm vous permet de publier vos propres packages, menant à une bibliothèque incroyablement grande.
Deno a adopté une approche totalement différente de la gestion des packages. Il n'a ni n'a besoin d'un système de gestion de paquets. Au lieu de cela, Deno permet l'importation directe de bibliothèques externes non seulement du système du développeur, mais de tout emplacement acceptant les requêtes HTTP.
Cela vous permet d'importer des bibliothèques depuis le référentiel de Deno, ou n'importe quel CDN en ligne, directement depuis leur base de code.
Le registre officiel des packages de Deno n'est pas aussi développé que celui de Node, grâce à l'avance de près de neuf ans de Node. La possibilité d'importer des bibliothèques de n'importe où vous évite de subir les conséquences d'un écosystème qui n'a pas encore eu la chance de se développer.
Implication de la communauté dans Node et Deno
Initialement publié en 2009 par Ryan Dahl, Node a eu beaucoup de temps pour que la communauté des développeurs s'implique. Avec de nombreux utilisateurs précoces et une importante bibliothèque de packages stockés dans son référentiel officiel et à votre disposition, le public a eu son mot à dire dans la croissance de Node.js.
La plate-forme elle-même est entièrement open-source, maintenue par la Fondation OpenJS et de nombreux contributeurs.
Deno est sorti en 2018, près de 9 ans après Node. Il a été principalement développé par Ryan Dahl pour répondre aux préoccupations et aux regrets qu'il avait avec sa mise en œuvre de Node. Aujourd'hui, Deno est également open source sous licence MIT.
Avec de nombreux contributeurs et son propre référentiel en pleine croissance, Deno a suscité beaucoup d'intérêt de la part de la communauté.
Problèmes de performance des deux cadres
Pour les codeurs intéressés par les différences de performances relatives entre les deux frameworks, il y a peu de différence entre les deux. Le moteur personnalisé de Deno écrit en Rust recouvre un cadre de base qui est toujours le moteur V8. En fin de compte, Deno et Node sont comparables dans presque tous les cas en termes de performances.
Cela semble être le cas, que le code résultant s'exécute sur le serveur ou sur le client. Les rendements de performance ne prenant pas en compte la décision, vous êtes libre de choisir le cadre avec lequel vous vous sentez le plus à l'aise.
Ryan Dahl, le créateur des deux frameworks, a proposé diverses raisons pour sa création de Deno. Bien qu'il ait mentionné plusieurs facteurs, allant de l'incapacité à intégrer correctement les promesses dans de nombreuses API au système de construction qu'il a choisi, les performances ne faisaient pas partie du processus.
Node vs Deno: quel est le bon choix?
Sous le capot, Node.js et Deno sont des frameworks remarquablement similaires. Les deux exécutent JavaScript à l'aide du moteur V8 avec des performances et des capacités similaires. Bien qu'il existe certaines différences dans la syntaxe, la gestion des packages et la prise en charge intégrée, votre choix d'utilisation dépend en grande partie de vos préférences.
Node dispose d'un écosystème incroyablement vaste, mais Deno vous permet d'extraire vos dépendances de n'importe quelle source. En fin de compte, vous devrez examiner de près votre propre style de développement et déterminer quelle plate-forme vous convient le mieux.