Deno : l’alternative moderne à Node.js

Mahaut Latinis
3 min readDec 17, 2024

--

DENO logo

Introduction

Deno est un runtime moderne pour JavaScript, créé par Ryan Dahl, le développeur à l’origine de Node.js. Après avoir lancé Node en 2009, Ryan Dahl a identifié plusieurs problèmes dans sa création initiale, qu’il a cherché à corriger avec Deno.

Cependant, le paysage des runtimes JavaScript s’est récemment enrichi avec Bun, qui met l’accent sur la performance brute. Pourtant, Deno 2 continue d’innover en proposant un environnement sécurisé, efficace et plus cohérent que Node.js. Cet article vous guidera à travers l’installation de Deno, ses fonctionnalités clés, ses avantages et comment il se compare à Node.

Pourquoi Ryan Dahl a-t-il créé Deno ?

Ryan Dahl a critiqué certains choix dans Node.js :

  • La gestion des dépendances via npm et le node_modules souvent lourd.
  • Le design de certaines APIs qui ne sont pas adaptées à un environnement moderne.
  • L’absence de sécurité par défaut, comme les permissions de fichier ou de réseau.

Pour pallier ces problèmes, il a créé Deno, un runtime sécurisé pour JavaScript et TypeScript basé sur V8 et écrit en Rust.

Installation de Deno

Installer Deno est simple. Voici les différentes méthodes selon votre système :

Via un script Shell (Linux/macOS)

Ouvrez votre terminal et exécutez :

curl -fsSL https://deno.land/install.sh | sh

Ajoutez ensuite Deno à votre PATH :

export DENO_INSTALL="$HOME/.deno"
export PATH="$DENO_INSTALL/bin:$PATH"

Via PowerShell (Windows)

Utilisez la commande suivante :

iwr https://deno.land/install.ps1 -useb | iex

Via un gestionnaire de package

  • Homebrew : brew install deno
  • Scoop : scoop install deno

Vérification de l’installation

Pour vérifier que Deno est installé correctement, lancez :

deno --version

Fonctionnalités principales de Deno

  • Sécurité par défaut

Deno exécute le code dans un environnement isolé. Par défaut, les accès au réseau, au système de fichiers ou aux variables d’environnement sont bloqués. Vous devez les activer explicitement :

deno run --allow-net script.ts
  • Support TypeScript natif

Contrairement à Node.js, vous n’avez pas besoin d’installer ts-node ou un bundler. Deno interprète directement le TypeScript :

deno run my_script.ts
  • Importation des modules via URL

Pas de node_modules ! Deno utilise des URLs pour importer les modules :

import { serve } from "https://deno.land/std/http/server.ts";
  • Un seul binaire

Deno inclut tout en un seul binaire :

  • Gestionnaire de dépendances.
  • Test runner (deno test).
  • Linter intégré.
  • APIs compatibles avec les standards Web

Deno expose des APIs proches des navigateurs (ex. : fetch, WebSocket, etc.). Voici un exemple simple de serveur HTTP :

const handler = (req: Request) => new Response("Hello Deno!");
Deno.serve(handler);

Remplacer Node.js par Deno

Pour migrer un projet Node.js existant vers Deno, voici les étapes principales :

Éliminer les require de CommonJS
Remplacez require par les imports ES6 :

// Avant 
const express = require("express");
// Après
import express from "npm:express";

Utiliser les modules npm avec Deno
Depuis Deno 1.28, vous pouvez importer des modules npm directement :

import express from "npm:express";

Gestion des permissions
Adaptez les commandes pour ajouter les permissions nécessaires :

deno run --allow-net --allow-env index.ts

Remplacer les outils Node

  • Tests : deno test remplace jest.
  • Linter : intégré avec deno lint.
  • Bundler : deno bundle pour créer un fichier unique.

Pourquoi Deno nécessite moins de dépendances ?

Deno évite le fameux node_modules en introduisant :

  1. Imports par URL : pas besoin d’un gestionnaire comme npm.
  2. Outils intégrés : test, bundler et linter sont fournis de base.
  3. APIs modernes : Deno utilise les standards du Web, ce qui évite de nombreux packages comme axios (remplacé par fetch).

Grâce à cette approche, Deno limite drastiquement le poids et la complexité des projets.

Comment Deno se rémunère ?

Deno est principalement open-source, mais se rémunère via :

  • Deno Deploy : une plateforme de déploiement cloud ultra-rapide pour les applications JavaScript/TypeScript. Elle permet de déployer des scripts en quelques secondes.
  • Offres Premium pour les entreprises : support, solutions sur mesure et intégration avec Deno Deploy.

En résumé, le modèle économique de Deno repose sur le SaaS tout en gardant le runtime gratuit.

Conclusion

Deno est une alternative moderne et sécurisée à Node.js qui simplifie le développement grâce à son support natif de TypeScript, ses APIs standardisées et ses outils intégrés. Bien que Bun offre des performances impressionnantes, Deno 2 mise sur un écosystème cohérent et minimaliste.

Si vous cherchez à moderniser vos projets JavaScript/TypeScript ou si vous en avez marre de node_modules, Deno est fait pour vous ! 🚀

--

--

Mahaut Latinis
Mahaut Latinis

No responses yet