Qu’est-ce que Deno et va-il remplacer Node.js ?

26 mai 2020

Deno est un runtime sécurisé pour JavaScript et TypeScript construit avec V8, Rust et Tokio.

Après son discours en 2018 sur les "10 choses que je regrette à propos de Node.js", Ryan Dahl le créateur de Node.js a annoncé l’arrivée de Deno. L’objectif de ce projet ? Corriger les erreurs de conception de Node.js et offre un nouvel environnement de développement moderne.

« Essayer de réimaginer Node.js à la lumière des progrès réalisés en JavaScript depuis 2009, y compris pour le compilateur TypeScript. Comme Node.js, Deno est essentiellement un shell autour du moteur JavaScript de Google V8. Mais contrairement à Node.js, il inclut le compilateur TypeScript dans son image exécutable. » selon la source Le monde informatique.

A noter que l'une des caractéristiques les plus importantes de Deno est sa concentration sur la sécurité et la productivité.

Qu’est-ce que Deno ?

Comme vu précédemment, Deno est un runtime JavaScript / TypeScript avec des valeurs par défaut sécurisées qui offre une excellente expérience de développeur. Il est construit sur V8, Rust et Tokio.

Deno regroupe bon nombre des meilleures technologies open source et offre une solution complète dans un petit fichier exécutable.

Le fait d'être écrit en TypeScript signifie qu’il bénéficie des nombreux avantages de ce langage, et ce, même si vous choisissez d'écrire votre code en JavaScript simple. L’exécution de code TypeScript avec Deno ne nécessite pas d'étape de compilation car Deno le fait automatiquement pour vous.

De plus, les modules Deno peuvent être hébergés n'importe où et la sécurité est intégrée.

Quels sont les points communs entre Deno avec Node.js ?

Deno et Node.js sont tous les deux des environnements de runtime qui permettent d'exécuter du code JavaScript côté serveur. Ils ont tous les deux été conçus pour être rapides, flexibles et faciles à utiliser, et sont utilisés pour créer des applications Web de qualité. Voici quelques points communs entre Deno et Node.js :

Basé sur JavaScript: Tous les deux sont basés sur le moteur JavaScript V8 de Google et permettent d'exécuter du code JavaScript côté serveur.

Orienté événement: Tous les deux utilisent une architecture orientée événement qui permet de traiter plusieurs requêtes en même temps de manière non bloquante et asynchrone.

Modules pré-écrits: Tous les deux incluent un certain nombre de modules pré-écrits qui peuvent être utilisés pour effectuer des tâches courantes de développement Web, telles que la gestion des requêtes HTTP, la gestion des bases de données et la gestion des fichiers.

Performances élevées: Tous les deux ont des performances élevées grâce à leur modèle d'exécution non bloquant et asynchrone.

Il y a cependant quelques différences clés entre Deno et Node.js, notamment le fait que Deno est plus récent et adopte une approche plus sécurisée en matière d'accès aux ressources système et de chargement de modules.

Quelles sont les différences entre Deno et Node.js ?

Comme Deno est essentiellement un remplacement de Node.js, il est donc utile de comparer directement les deux. Ces deux plates-formes ont le même objectif, mais utilisent des mécanismes différents. Deno utilise les modules ES comme système de modules par défaut, tandis que Node.js utilise CommonJS. La différence la plus importante selon nous, est la façon dont les modules sont importés.

Comme Node, Deno fonctionne principalement sur une interface de ligne de commande, ce qui facilite les appels depuis d'autres programmes. Il est construit en Rust pour être rapide et comprend une API de plugin.

Pour beaucoup, la fonction la plus importante de Deno sera la prise en charge native de TypeScript. Le TypeScript a eu un impact énorme sur le paysage JavaScript, mais il doit être transposé en JavaScript afin de tirer parti de son plein potentiel.

Mais avec Deno, TypeScript est désormais un langage de première classe. Vous pouvez vous épargner la peine de déboguer les erreurs de frappe sans vous soucier d'une chaîne de construction complexe.

La popularité de TypeScript s'est récemment accrue, en grande partie grâce à la facilité de maintenance et de débogage qu'offre le langage mais aussi en raison de son adoption par les devs front mais aussi par les développeurs React comme Angular et React.

En supprimant l'étape de construction, Deno supprime une raison supplémentaire de ne pas passer au TypeScript.

Deno comme Node.js supportera un vaste écosystème de modules et de dépendances. Node.js a fait cela avec npm, mais bien qu'il ait un dépôt central avec npm, il n'a pas pu empêcher les mauvais côtés car certains paquets autrefois utiles ont été mis à jour et ont glissé du code malveillant, exposant ainsi les difficultés des mises à jour automatiques.

Deno a fait l'objet de critiques sur sa façon de gérer les dépendances. Au lieu de les faire passer par un gestionnaire de paquets, Deno spécifie chaque module de dépendance sous la forme d'une simple URL. Vous n'avez plus la protection d'un gestionnaire central, mais rien ne garantit que ce dépôt offre plus de protection qu'un lien direct vers ce code.

Comme tout navigateur moderne, Deno exécute tout le code dans une sandbox ; il ne peut pas accéder au disque dur, aux connexions réseau ou aux périphériques d'entrée/sortie sans autorisations explicites. Tout code doit être exécuté avec un drapeau qui permet des activités autres que celles de la sandbox. Et les autorisations sont granulaires : vous pouvez accorder l'accès à un seul disque dur ou à un seul emplacement du réseau.

Il faut voir si cela change la donne pour les applications web ou s'il s'agit d'une mise à jour utile qui ne prend pas pied. Mais à première vue, elle pourrait faire les progrès les plus récents vers la procédure standard JavaScript (comme TypeScript) dans le code côté serveur.

Deno remplacera-t-il Node.js ?

On peut vouloir utiliser Deno parce qu'il pourrait faire la même chose que Node.js, mais d'une manière plus efficace. Deno en est encore aux premiers stades de développement et Node.js est utilisé dans de nombreux projets, ce qui signifie que Node.js ne va pas disparaître du jeu de sitôt.

Deno n'est que l'aboutissement d'environ 2 ans de travail sur une idée.

Elle n'a pas encore été testée dans les systèmes de production ni été revu et mis en œuvre dans des cas d'utilisations spécifiques.

Peut-être que dans un an, nous commencerons à entendre des entreprises qui nous feront part de leur expérience avec ce système, de la manière dont elles ont résolu les nouvelles lacunes, et finalement, la communauté qui le soutient l'adaptera pour qu'il soit utile.

Remplacera-t-il alors Node ? Qui sait ? Nous devrons attendre et voir.

L'auteur Florian Grandvallet

Co-Founder

Florian Grandvallet
Postuler à l'annonce Postuler à toutes les annonces Ingénieur système linux orienté web
Remplissez le formulaire
C'est tout bon

On vous recontacte au plus vite !
En attendant, vous pouvez toujours consulter nos autres jobs !

rotate screen

Retourner votre tablette pour une meilleure navigation