Introduction à Node.js
Exécution JavaScript côté serveur, architecture événementielle et I/O non bloquant.
Node.js est l'environnement d'exécution JavaScript côté serveur le plus utilisé au monde. Il permet d'exécuter du JavaScript en dehors du navigateur — pour créer des API, lire des fichiers, interroger des bases de données — avec le même langage du front au back. En 2026, Node.js reste le socle de la stack JavaScript/TypeScript : Express, Next.js, les outils de build et l'écosystème npm s'appuient tous sur lui.
Objectifs du chapitre
- Comprendre l'exécution JavaScript côté serveurFaible
- Expliquer le modèle asynchrone et non-bloquant (event loop)Moyenne
- Installer Node.js avec nvm et vérifier l'environnementMoyenne
- Écrire un premier serveur HTTP natif et manipuler le système de fichiersÉlevée
🧠 Pourquoi Node.js
Node.js n'est pas un framework — c'est un runtime. Il embarque le moteur V8 de Chrome et ajoute des API système (fichiers, réseau, processus) absentes du navigateur.
Ce que Node.js apporte :
- Un seul langage, du navigateur au serveur : les équipes partagent le même JavaScript/TypeScript, les mêmes types, les mêmes outils.
- I/O non bloquant : la boucle d'événements (
event loop) traite des milliers de connexions simultanées sans multiplier les threads. - Écosystème npm : le registre le plus vaste du monde — des millions de paquets installables en une ligne.
- Standard de fait pour les API : Express, Fastify et l'écosystème serveur Node.js dominent le back-end JavaScript.
Node.js n'est pas une magie de performance. Il excelle sur les charges I/O (fichiers, réseau, base de données). Pour du calcul CPU intensif, il faut du clustering ou déporter la charge.
🔄 Event Loop et non-bloquant
Node.js utilise une boucle d'événements (event loop) : au lieu de bloquer le thread en attente d'une opération lente (lecture de fichier, requête réseau, requête DB), il enregistre un rappel et passe à la tâche suivante. Les I/O sont traitées en asynchrone, ce qui maintient le serveur réactif même sous forte charge.
// Une opération I/O ne bloque pas le thread :
const fs = require("fs")
fs.readFile("gros-fichier.txt", "utf8", (err, data) => {
// ce callback s'exécute PLUS TARD, quand le fichier est lu
console.log(data)
})
console.log("cette ligne s'exécute AVANT la fin de la lecture")Erreur fréquente : croire que Node.js est systématiquement plus rapide. Il brille sur les charges I/O ; pour du pur calcul CPU, il n'est pas nécessairement le plus rapide sans clustering.
📦 Modules et exécution
Node.js organise le code en modules. Deux systèmes coexistent :
-
CommonJS (historique, par défaut dans les fichiers
.js) : on expose avecmodule.exportset on importe avecrequire().const fs = require("fs") module.exports = { lire: (p) => fs.readFileSync(p, "utf8") } -
ES Modules (moderne,
.mjsou"type": "module"danspackage.json) : on utiliseimport/export.import fs from "node:fs" export const lire = (p) => fs.readFileSync(p, "utf8")
L'objet global process donne accès à l'environnement d'exécution :
process.env— variables d'environnement (port, secrets, configuration)process.argv— arguments CLI passés au scriptprocess.cwd()— dossier courant d'exécution
📥 Installation
Node.js est disponible sur tous les systèmes. Les postes de l'université sont déjà configurés — voir la sous-page Installation pour les détails par plateforme.
node -v # Affiche la version de Node.js
npm -v # Affiche la version de npm (installé avec Node.js)Pour les projets professionnels, utiliser nvm (Node Version Manager) pour basculer entre les versions :
nvm install node # Dernière version LTS
nvm use lts/* # Basculer sur la LTS actuelle📋 Parcours du chapitre
⚙️ Runtime et modules
Event loop, objet process, CommonJS vs ESM typés.
🌊 Gestion des flux
Module fs, streams et buffers pour l'I/O fichier.
📦 Écosystème npm
package.json, dépendances, scripts et registre npm.
🌐 Serveur HTTP natif
Créer un serveur http, gérer les requêtes et réponses JSON.
🔧 Installation
Installer Node.js avec nvm et vérifier l'environnement.
🛠️ Atelier
Construire un serveur HTTP pas à pas : routes, POST, fichiers statiques.
🏋️ Exercice
Serveur HTTP natif + lecture de fichier, versionné avec Git.
📚 Ressources
Documentation officielle et liens pour approfondir.
⚡ Quiz
Validez vos connaissances sur Node.js.
🛠️ Atelier — construire un serveur HTTP pas à pas
L'atelier fait tourner un serveur http minimal puis l'améliore progressivement : routes multiples, parsing de corps POST, fichiers statiques et codes HTTP précis.
→ Atelier complet — construire un serveur HTTP pas à pas
🏋️ Exercice
Serveur HTTP natif complet (codes 404/405) à implémenter dans le projet fil rouge.
→ Exercice
🎯 Synthèse
Node.js exécute JavaScript côté serveur via une event loop non bloquante. Il partage le même langage et le même écosystème que le navigateur, ce qui simplifie considérablement le développement full-stack.
Dans le projet fil rouge (branche session-04), ce chapitre démarre le serveur HTTP natif renvoyant du JSON. La séance 5 (Express) migration ce serveur vers un framework.
→ Page de synthèse · Exercice · Quiz
Node.js
Terminez le quiz du chapitre pour le marquer comme complété.