TW3 — Technologies du Web 3

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.

📚 Apport60′

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 avec module.exports et on importe avec require().

    const fs = require("fs")
    module.exports = { lire: (p) => fs.readFileSync(p, "utf8") }
  • ES Modules (moderne, .mjs ou "type": "module" dans package.json) : on utilise import / 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 script
  • process.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

🛠️ Atelier34′

🛠️ 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

🏋️ Exercice15′

🏋️ Exercice

Serveur HTTP natif complet (codes 404/405) à implémenter dans le projet fil rouge.

→ Exercice

🎯 Synthèse0′

🎯 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é.

Tableau de bord

On this page