2025

Deno entre dans la cour des grands ?

Deno Logo 2024

Pourquoi parler de Deno en 2025 ? 🤔

Deno : Origine et vision

Deno : Origine et vision

Dahl Ryan

Ryan Dahl

Deno : Origine et vision

Dahl Ryan

Ryan Dahl

node js

Deno 1 : Une révolution inachevée

  • Sorti le 13 Mai 2018 avec des ambitions fortes :

    • 📦 Gestion des dépendances sans node_modules et sans package.json.

    • 🔒 API sécurisée.

    • 📌 Support natif pour TypeScript.

💡 Pourquoi ça n’a pas convaincu ?

  • 🚧 Manque d’outils essentiels (npm absent, API instable).

  • 🏗️ Adoption difficile (modèle d’importation perturbant pour les développeurs Node.js).

  • 🛠️ Écosystème limité (peu de bibliothèques compatibles).

  • Performances parfois inférieures à Node.js.

🃏 Deno 2 : Une redistribution des cartes

  • Support total de npm

  • 🔄 Interopérabilité avec Node.js

  • Amélioration des performances et réduction de la consommation mémoire

  • 🏗️ Outillage plus complet.

Ce qui fait la spécificité de Deno ✨

🔒 Sécurité intégrée par défaut

  • Aucune permission accordée par défaut.

  • Accès explicite aux ressources système (fichiers, réseau, etc.)

  • Réduction des failles de sécurité.

# Autoriser la lecture du fichier index.adoc
deno run --allow-read=/slide/index.adoc convert-slides.js
# Autoriser l'écriture dans le dossier courant
deno run --allow-write convert-slides.js
# Autoriser l'accès à github.com et jsr.io
deno run --allow-net=github.com,jsr.io convert-slides.js
# Autoriser l'accès aux variables d'environnement HOME et FOO
deno run --allow-env=HOME,FOO convert-slides.js
# Autoriser l'exécution des commandes curl et whoami
deno run --allow-run="curl,whoami" convert-slides.js

📦 Deno 2 et la compatibilité npm

  • ✅ Support total de npm

  • 🔄 Interopérabilité avec Node.js ( possibilité d’utiliser node_modules et package.json )

📦 Deno 2 et la compatibilité npm

// import directement dans le code
import express from "npm:express";

const app = express();
app.get("/", (req, res) => res.send("Hello Deno + npm!"));
app.listen(3000);

📦️ Support de CommonJS

  • Deno peut maintenant exécuter des modules CommonJS

  • Plus besoin de wrapper des anciennes bibliothèques npm

  • Amélioration majeure pour la compatibilité avec l’écosystème Node.js

// Importation d'un module CommonJS classique
import react from "npm:react";

🛠️ Outils intégrés = Moins de dépendances

  • Plus besoin de configurer des outils externes, tout est intégré !

# Détection des erreurs potentielles
deno lint mon_script.ts
# Formatage automatique du code
deno fmt mon_script.ts
# Génère la documentation
deno doc ./path/to/module.ts
# Lance les tests unitaires
deno test mon_script_test.ts

🧪 Tester avec Deno

  • Framework de tests intégré.

  • Compatible avec BDD (describe/it).

  • Exécutable sans dépendances externes.

import { describe, it } from "jsr:@std/testing/bdd";
import { expect } from "jsr:@std/expect";
import { add } from "./add.js";

describe("add function", () => {
  it("should add two numbers correctly", () => {
    expect(add(2, 3)).toBe(5);
  });
});

☁️ Déploiement instantané avec Deno Deploy

  • Serverless & ultra-rapide

  • Intégration avec GitHub, AWS, GCP, Azure

    deno deploy --project=mon-projet api/hello.ts

⚔️ Comparaison avec Node.js et Bun

📊 Comment se positionne Deno par rapport à Node.js et Bun ?

comparatif

🚧 Défis et limites de Deno

  • Moins d’utilisateurs et de contributions que Node.js

  • Compatibilité npm en progression, mais encore partielle

  • Performance parfois inférieure à Bun et Node.js

🎯 Conclusion : Deno, l’année décisive ?

  • Deno propose une alternative moderne et sécurisée à Node.js.

  • De nombreux outils et frameworks sont déjà disponibles.

  • Mais doit convaincre la communauté.

📌 Essayez Deno et faites-vous votre propre avis !

2025 : L’année de Deno ?

deno futur