Node.js permet d’utiliser JavaScript côté serveur pour construire des applications Web rapides et scalables grâce à son modèle événementiel non bloquant. Cette formation couvre les fondamentaux de Node.js sur ses versions actuelles 22 et 24 LTS, avec un éclairage sur Node.js 26 attendu en mai 2026 : ESM natif, event loop et asynchronisme, API REST avec Express 5 et panorama Fastify, Hono, NestJS, validation Zod, accès aux bases de données via Prisma et Mongoose, runner de tests natif node:test, support TypeScript natif via --strip-types et sécurité avec helmet, CORS et rate limiting. Vous repartirez avec les compétences pour développer, tester et déployer des applications back-end JavaScript modernes.
Public visé
Développeurs, architectes et chefs de projets techniques.
Prérequis
Avoir suivi cette formation, ou en maîtriser les thèmes abordés :
Objectifs pédagogiques
À l’issue de cette formation, vous serez capable de :
- Comprendre le modèle asynchrone non bloquant de Node.js et son event loop
- Identifier les API fondamentales fournies par Node.js — modules core, namespace
node: - Choisir entre ESM natif standard et CommonJS historique
- Construire un serveur HTTP avec Express 5 et situer Fastify, Hono, NestJS
- Réaliser et tester des API REST avec validation moderne via Zod
- Accéder à des bases SQL et NoSQL — Prisma/Drizzle, Mongoose, Redis
- Mettre en place une chaîne d’outillage moderne — pnpm/npm/yarn, runner natif
node:test, TypeScript natif, Pino, Biome - Sécuriser et superviser une application Node.js — helmet, CORS, PM2
- Situer les versions LTS actuelles Node 22 et Node 24, et anticiper Node.js 26
Programme
Jour 1 - Matin
Node.js et asynchronisme
Présentation de Node.js et de ses versions
- comprendre Node.js — runtime JavaScript serveur basé sur V8
- distinguer Current et LTS — calendrier avril/octobre, support 30 mois pour les LTS
- choisir une version pour un projet — Node.js 22 LTS supporté jusqu’à avril 2027 ou Node.js 24 LTS active jusqu’à octobre 2027
- situer Node.js 25 en branche Current et Node.js 26 — sortie prévue le 4 mai 2026, future LTS en octobre 2026, dernière release sous le modèle de cadence actuel
- comparer aux runtimes alternatifs — Deno 2.x, Bun 1.x
Travaux pratiques :
- Installer Node.js via nvm, comparer les versions LTS et current sur un même script et observer les différences
Premier contact avec Node.js
- exécuter un script Node depuis la ligne de commande
- expérimenter dans le REPL
- exploiter le watch mode natif —
node --watch - charger des variables d’environnement avec
--env-filedepuis Node 20 - afficher dans la console
Travaux pratiques :
- Écrire un script Hello World, le relancer en mode watch et exposer une variable d’environnement
Asynchronisme et event loop
- comprendre le modèle mono-thread, non bloquant et événementiel
- distinguer microtasks et macrotasks dans l’event loop
- éviter le callback hell avec Promises et
async/await - gérer les erreurs avec try/catch et rejection
Travaux pratiques :
- Écrire un programme qui combine timers, fichiers et requêtes HTTP en
async/await, observer l’ordre d’exécution
Jour 1 - Après-midi
Modules et API core
ES Modules natifs
- déclarer un module avec
import/export - définir le type d’un projet —
"type": "module"danspackage.json - charger dynamiquement avec
import()et top-levelawait - comprendre l’API
requireappliquée à ESM officialisée en Node 22 LTS - positionner CommonJS et son couple
require/module.exportsen mention historique
Travaux pratiques :
- Créer un projet ESM avec un module local et un module npm, charger l’un statiquement et l’autre dynamiquement
Modules core et convention node:
- adopter le préfixe
node:depuis Node 16 - lire et écrire des fichiers avec
node:fs/promises - manipuler chemins et URLs avec
node:pathetnode:url - chiffrer et hacher avec
node:crypto
Travaux pratiques :
- Écrire un utilitaire CLI qui lit un fichier, calcule son SHA-256 et affiche la taille
EventEmitter et événements
- déclencher et écouter des événements avec
node:events - comprendre la propagation et les listeners
- gérer les erreurs avec l’événement
error
Travaux pratiques :
- Implémenter un mini bus d’événements pour une application
Concurrence et streams
- déléguer un calcul lourd à un Worker Thread via
node:worker_threads - exploiter les Web Streams natives en Node
- annuler une opération avec
AbortController
Travaux pratiques :
- Transférer un gros fichier en streaming et tester l’annulation avec
AbortController
Jour 2 - Matin
Serveur HTTP et frameworks
Module HTTP natif
- créer un serveur HTTP minimal avec
node:http - gérer requête et réponse
- positionner
fetchnatif côté serveur, stable depuis Node 21
Travaux pratiques :
- Implémenter un serveur HTTP minimal qui répond en JSON sans framework
Express 5
- installer et démarrer Express 5
- définir des routes et leur arborescence avec
Router - consommer les requêtes avec les body parsers natifs
- composer des middlewares propres et tiers
- servir des ressources statiques
Travaux pratiques :
- Construire une mini application Express 5 avec routes, middleware de log et fichiers statiques
Frameworks alternatifs — panorama
- comparer les choix actuels — Express 5 stable et ubiquitaire, Fastify orienté perf avec validation native, Hono multi-runtime, NestJS POO modulaire et TypeScript
- positionner chaque framework selon le projet
Travaux pratiques :
- Reconstruire la même API minimaliste en Express puis en Fastify et comparer
WebSockets côté serveur
- introduire les WebSockets —
wsou WebSocket natif depuis Node 22 - distinguer requête HTTP et connexion persistante
Travaux pratiques :
- Ajouter un endpoint WebSocket à une application Express et diffuser un message à tous les clients connectés
Jour 2 - Après-midi
API REST et accès aux données
Concevoir une API REST
- comprendre les principes REST — ressources, verbes HTTP, codes de statut
- structurer les routes avec versionning
- gérer la pagination, le filtrage et le tri
- documenter une API avec OpenAPI/Swagger
Travaux pratiques :
- Concevoir une API REST de gestion de tâches en partant des cas d’usage
Validation et configuration
- valider les entrées avec Zod, en introduction
- charger la configuration via
.envetprocess.env - distinguer environnements — dev, staging, production
Travaux pratiques :
- Ajouter une validation Zod des bodies et un fichier
.envpour la configuration
Accès aux bases de données
- choisir une base selon le besoin — PostgreSQL, MySQL, MongoDB, Redis
- accéder en SQL via un driver natif —
pg,mysql2 - utiliser un ORM moderne — Prisma, Drizzle
- accéder à MongoDB avec Mongoose
- accéder à Redis avec
ioredis
Travaux pratiques :
- Connecter l’API REST à PostgreSQL via Prisma — schéma, migration, requêtes typées
Gestionnaires de paquets
- comprendre le rôle de
package.jsonetpackage-lock.json - comparer les gestionnaires actuels — npm, pnpm, yarn berry
- gérer les dépendances dev, peer et optional
- exposer un binaire avec
binetnpx
Travaux pratiques :
- Initialiser un projet avec pnpm, ajouter quelques dépendances et exposer un script CLI
Jour 3 - Matin
Outillage et qualité
Tests
- exploiter le runner natif Node.js —
node:test,assert - structurer des tests avec
describe,itet hooks - mocker avec les utilitaires de mock natifs
- exécuter avec
node --test --watch - positionner Vitest et Jest comme alternatives mûres
- couvrir avec
--experimental-test-coverage
Travaux pratiques :
- Ajouter des tests
node:testà l’API REST développée la veille et observer la couverture
TypeScript en Node.js
- comprendre l’apport du typage progressif côté serveur
- exécuter du TypeScript directement avec
node --strip-types - utiliser
tsxouts-nodepour les scripts complexes - typer une API publique avec interfaces et génériques
Travaux pratiques :
- Convertir progressivement un module JS en TypeScript et l’exécuter sans étape de build avec Node natif
Logging et observabilité
- choisir un logger structuré — Pino, Winston
- formater les logs en JSON pour l’agrégation
- corréler les logs avec
AsyncLocalStorage
Travaux pratiques :
- Remplacer les
console.logpar Pino, produire des logs structurés et les visualiser
Linters et formateurs
- choisir un outil — ESLint, Biome, oxlint
- intégrer à l’IDE et à la CI
- appliquer un ruleset adapté à Node et TypeScript
Travaux pratiques :
- Intégrer Biome au projet, l’ajouter à la CI et corriger les problèmes remontés
Jour 3 - Après-midi
Production et perspectives
Sécurité
- durcir une application Express avec helmet
- gérer CORS avec discernement
- limiter les abus avec rate limiting
- valider strictement les entrées avec Zod
- découvrir le Permission Model expérimental de Node.js —
--permission
Travaux pratiques :
- Ajouter helmet, CORS, rate limiting et validation Zod à l’API REST, tester un scénario d’abus
Process management et déploiement
- superviser un process avec PM2 — démarrage, redémarrage automatique, clustering
- charger les variables d’environnement en production
- déployer sur PaaS ou VPS
Travaux pratiques :
- Mettre l’API REST sous PM2, configurer le redémarrage automatique et observer les logs
Performance
- profiler un endpoint avec
node --inspectet Chrome DevTools - exploiter le cluster module ou un reverse proxy pour scaler
- mesurer la charge avec autocannon ou k6
Travaux pratiques :
- Profiler un endpoint lent et appliquer une optimisation mesurable
Node.js 26 — apports concrets
- positionner la version — sortie 4 mai 2026, Current jusqu’à octobre 2026, future LTS jusqu’en avril 2028 puis Maintenance jusqu’en avril 2029
- exploiter la Temporal API activée par défaut — remplaçant moderne de l’objet
Date, sans polyfill, V8 14.4 ayant unflaggé Temporal côté moteur - profiter de la mise à jour V8 embarquée — apports JavaScript récents tels qu’iterator helpers ES2025 et Set methods disponibles côté runtime
- utiliser le support TypeScript natif consolidé —
--strip-typespoursuit sa stabilisation entamée en Node 22 et étendue en Node 24 - éprouver le Permission Model en cours de maturation
- exploiter le runner natif
node:testconsolidé — mock framework natif, couverture, watch mode - s’appuyer sur
requireappliqué à ESM — déjà stable depuis Node 22, comportement uniformisé - intégrer le module
node:sqlite— ajouté en Node 22 en mode expérimental, stabilisé dans les versions suivantes - comprendre le contexte calendrier — dernière release sous le modèle de cadence actuel, avec une refonte du release schedule à suivre
Stratégie de migration
- rester sur LTS pour la production — Node 22 supporté jusqu’à avril 2027 ou Node 24 Active LTS jusqu’à avril 2028
- tester Node 26 en CI dès sa sortie pour anticiper la migration
- planifier le passage en LTS Node 26 après son entrée Active LTS en octobre 2026
- vérifier la compatibilité des dépendances natives — modules npm avec bindings
- tester l’effet de Temporal activé par défaut sur le code existant utilisant
Date
Travaux pratiques :
- Projet final : API REST type-safe en TypeScript natif Node, Prisma + PostgreSQL, tests
node:test, helmet/CORS, Pino, supervisée par PM2, utilisant Temporal pour la gestion des dates et prête pour migration Node.js 26
Modalités d’évaluation des acquis
En cours de formation, par des travaux pratiques. En fin de formation, par un questionnaire d’auto-évaluation.
Pour aller plus loin
Cette formation donne accès à cette formation :
Voir aussi
Vous serez peut-être intéressés par les formations suivantes :
Formation DEV-NODE-100 — NodeJS - Initiation. Domaine : Développement. Niveau : Initiation. Durée : 3 jours (21 heures). Mots-clés : nodejs, node 22 lts, node 24 lts, node 26, esm, express 5, fastify, hono, nestjs, zod, prisma, postgresql, mongoose, redis, node:test, typescript natif, pino, biome, pnpm, helmet, cors, pm2. Cylian Formation, Dijon.