Synthèse — Node.js
Bilan du chapitre Node.js : event loop, modules, système de fichiers, écosystème npm et premier serveur HTTP natif.
🧾 Ce qu'on a vu
| Concept | Ce qu'il faut retenir |
|---|---|
| Runtime vs framework | Node.js est un environnement d'exécution (runtime), pas un framework. Il embarque V8 + API système (fs, http, process…). Express est un framework qui s'exécute sur Node.js. |
| Event loop | Boucle d'événements qui traite les I/O en asynchrone sans bloquer le thread. L'application reste réactive sous charge. Node.js n'est pas plus rapide en CPU pur — il excelle sur les charges I/O-bound. |
| CommonJS vs ESM | Deux systèmes de modules coexistent. CommonJS (require/module.exports) est l'historique par défaut. ESM (import/export) est le standard moderne, activé avec "type": "module" ou l'extension .mjs. Avec moduleResolution: "NodeNext", l'extension .js est obligatoire dans les imports. |
| process | Objet global donnant accès à process.env, process.argv, process.cwd() — la fenêtre sur l'environnement d'exécution. Avec @types/node, chaque propriété est typée. |
| npm et package.json | npm est le registre et l'outil CLI. package.json déclare les dépendances (dependencies vs devDependencies), les scripts et les métadonnées. package-lock.json fige les versions exactes pour la reproductibilité. |
| Système de fichiers | fs/promises + await pour du code asynchrone moderne. fs.readFileSync bloque l'event loop — à éviter en serveur. Les streams traitent les gros fichiers par morceaux sans tout charger en mémoire. Les buffers stockent des données binaires brutes. |
| Serveur HTTP natif | Le module http permet de créer un serveur sans dépendance externe. IncomingMessage (req) donne accès à url, method, headers. ServerResponse (res) utilise writeHead() + end(). Codes 404 (introuvable) et 405 (méthode non autorisée) sont distincts. |
🔄 Ce qui vient ensuite
Dans la séance 5 (Express), on migre ce serveur natif vers Express :
- Routage déclaratif (
app.get,app.post…) - Middlewares (logging, parsing JSON, authentification)
- Gestion d'erreurs centralisée
Express n'efface pas Node.js — il s'appuie sur lui. Comprendre le http natif fait la différence quand un middleware ne fait pas ce qu'on attend.
📋 Points clés à retenir
- Node.js ≠ framework : c'est le runtime. Express est le framework sur Node.js.
- Event loop = non-bloquant : les I/O ne bloquent pas le thread. Pour du CPU intensif, il faut du clustering.
- ESM moderne : avec
moduleResolution: "NodeNext", importer"./fichier.js"même depuis un.ts. - fs/promises + await : l'API moderne pour les fichiers. Éviter
readFileSyncen serveur. - Streams pour les gros fichiers :
createReadStream+pipelinepour ne pas tout charger en mémoire. - 404 ≠ 405 : 404 = route inconnue, 405 = méthode non gérée sur une route connue.
- npm install -D pour les outils de dev,
npm installpour les dépendances d'exécution.
📦 Projet fil rouge
Branche session-04 du dépôt projet-fil-rouge-tw3 : premier serveur HTTP natif renvoyant du JSON, avec codes 404/405.
🔗 Liens
→ Retour à l'introduction · Atelier · Exercice · Quiz · Ressources
Node.js
Terminez le quiz du chapitre pour le marquer comme complété.
Exercice — Serveur Express + lecture de fichier (et Git)
Construisez un petit serveur Express qui lit un fichier via fs, puis versionnez le tout avec Git, en appliquant Node.js, NPM et les bonnes pratiques.
Ressources Node.js
Documentation officielle, guides et bonnes pratiques pour approfondir Node.js : runtime, event loop, modules, I/O.