Deno, le nouveau runtime pour Typescript

Tu connais pas Deno?? Tu utilises NodeJS pour tes projets backend? Alors cet article va grandement t’intéresser! En 2018 déjà, lors de la JSConf, Ryan Dahl le créateur de Node Js, présentait ses regrets quant à la conception et l’utilisation de NodeJS. Il nous parle alors de son nouveau projet un peu fou… Deno. Je te présente ici la future relève de Node Js, j’ai nommé Deno V1, qui est officiellement sorti le 13 mai 2020.

Deno, une alternative à NodeJS?

Deno, (prononcé Dino) arrive et a pour objectif ce palier aux défauts de Node Js! Il permet entre autres, d’interpréter directement le Typescript sans avoir besoin de le compiler avant l’exécution.

Une révolution dans le monde du développpement Backend Javascript & Typescript.

Site web de Deno: https://deno.land/

Les problèmes avec NodeJS

Mais quels sont donc les « problèmes » de NodeJS? Pourquoi le créateur de NodeJS crée un nouveau runtime plutôt que d’améliorer NodeJS?? Deno annonce t-il la fin de NodeJS?

Je vais tâcher de répondre le plus simplement à ces questions.

Les promesses

Avec NodeJS, un des gros problèmes que l’on rencontre immédiatement, c’est l’utilisation des Promises et Asyn/Await.

Oui, car NodeJS ne prenait pas en compte le système initial de promesse et souvent on utilise une librairie tierce du type « Bluebird » pour pallier ce souci. Pour les versions plus modernes de NodeJS, les promesses fonctionnent correctement mais la gestion de conflits entre librairie et l’API native peut poser des soucis.

Avec Deno, vous pouvez exécuter des Promises sans vous soucier de quoi que ce soit! Vous pouvez même utiliser les Pomises en dehors d’un scoop fonctionnel car l’ensemble du runtime prend en compte directement les Pomises et donc async/await.

Sécurité faible

Un autre grand problème de NodeJS est l’aspect sécuritaire… Je m’explique.

Lors du développement d’un projet NodeJS, on est amené à « télécharger » des dépendances que l’on va lier à notre projet. Ce sont les fameux « node modules ». Tout le monde connaît et utilise ce système de dépendance. C’est une des grandes forces de Node mais aussi une de ces grosses faiblesses!

Eh oui! Les packages téléchargés ne sont jamais vérifiés et de nombreuses failles de sécurité peuvent s’y cacher, voire même y être ajoutées intentionnellement. Et personne ne vérifie la sécurité des packages….

Ceux-ci peuvent « moucheter » les données de l’application ou pire… accéder directement au ressources système.

Avec Deno, chaque opération sensible requière une autorisation au nivaux du runtime. Ce qui sécurise grandement l’environnement d’exécution par rapport à Node Js.

Le système de build GYP

Ce système de build GYP qu’utilise Node est également critiqué. Selon certain développeur, GYP serait complètement à la dérive pour reprendre les terms utilisés…

Perso je ne connais pas suffisamment le sujet pour pouvoir m’exprimer, et je pense pas que copier du contenu en provenance d’une autre source sera d’une grande utilité. Le laisserai donc tout a chacun faire cette propre recherche et se baser sa propre opinion sur le système GYP.

Pour ma part, en tant que développeur et architect software, ce soucis me impact pas.

Le package.json et NPM

Ici par contre tous le monde est concerné! Avec Deno, il n’y a pas de « package.json »

Les dépendances sont téléchargées à la volée via une requête HTTP. Syntaxiquement cela se traduit par un « import » traditionnel mais pas depuis les nodes_modules mais depuis une adresse web.

Mais alors Deno c’est quoi?

Deno vient bousculer le monde tranquille de Javascript et NodeJS en proposant une nouvelle manière d’exécuter du code. Ce n’est pas encore un remplaçant viable car il y a encore de nombreux modules qui sont encore en mode « développement » et peuvent être amenés à changer. C’est ce que l’on peut voir dans leur doc.

Lien vers la Doc Deno.
Lien vers les modules stable Deno.
Lien vers les modules instable Deno.

Mais sont arrivées à bien fait trembler des acteur du projet NodeJS en leur suggérant quelque nouveauté et approche moderne.

N’oublions pas que NodeJS a été créer il y a plus de 10 ans… Rappelez-vous ce qu’était Javascript il y a 10 ans…

Deno lui embarque et intègre les nouveaux pattern design et de programmation qu’offre le Javascript moderne.

Une demo de Deno

J’ai fait il y a quelques jours une petite vidéo de présentation de Deno sur ma chaine Youtube que je t’encourage à checker pour avoir une petite idée du truc.

L’avenir de Deno et NodeJS

Encore trop tôt pour ce prononcer, mais gardons à l’oeil cet outils.

Framework pour Deno

Oui il existe de nombreux framework pour coder les projets Deno.

J’en ai testé un que je présente dans une autre vidéo que je te met juste à la suite… Je montre comment faire de A à Z une REST API avec Deno et Oak Framework.

Conclusion

Le nouveau runtime Typescript Deno annonce de belle chose! Encore trop jeune à mon goût pour être déjà utilisé en prod mais les choses devrait vite changer. J’encourage donc tous les devs NodeJS à garder un oeil sur cette nouvelle techno qui émerge.

Je te montrerai dans les prochains articles quelques autres astuces et tuto sur Deno.

En attendant, je te laisse consulter les autres articles traitant d’un sujet similaire dans la section Programmation.

Tu as besoin de support pour ton projet?
Je t’invite à te rendre sur le lien suivant pour définir ensemble une solution de support qui te convienne.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *