Avez-vous une question? (216) 97 656 803 hajjriadh@gmail.com
NestJS

Présentation de l'environnement de développement Node.js

Cette leçon présente Node.js, l'environnement qui exécute JavaScript côté serveur et sur lequel repose NestJS : le moteur V8, le fonctionnement non bloquant et la boucle d'événements, les versions LTS...

0 chapitres 0 QCM Accès gratuit
Présentation de l'environnement de développement Node.js

À propos de ce cours

Cette leçon présente Node.js, l'environnement qui exécute JavaScript côté serveur et sur lequel repose NestJS : le moteur V8, le fonctionnement non bloquant et la boucle d'événements, les versions LTS, l'installation sur Windows, macOS et Linux (avec ou sans gestionnaire de versions nvm), la console interactive et un premier script. Les activités font installer Node.js et écrire un petit serveur HTTP.

Objectifs de la leçon

  • Expliquer ce qu'est Node.js et pourquoi NestJS en a besoin.
  • Comprendre le fonctionnement non bloquant de Node.js.
  • Installer Node.js et vérifier l'installation.
  • Exécuter un premier script JavaScript avec Node.js.
Qu'est-ce que Node.js ?

Node.js est un environnement d'exécution JavaScript : un programme qui permet de lancer du code JavaScript en dehors du navigateur, directement sur un ordinateur ou un serveur. Ce n'est ni un langage ni un framework.

  • Il utilise V8, le moteur JavaScript de Google Chrome, qui compile le code en langage machine : il est donc rapide.
  • Il ajoute ce que le navigateur n'offre pas : accès aux fichiers, au réseau, aux processus, création de serveurs…
  • Il ne contient pas ce qui est propre au navigateur : pas de document, pas de window, pas de DOM.

NestJS est un ensemble de paquets JavaScript : c'est Node.js qui l'exécute. Node.js est donc le premier outil à installer.

Un fonctionnement non bloquant

Node.js exécute votre code sur un seul fil d'exécution (thread). Pour rester rapide, il ne reste jamais à attendre : quand une opération est lente (requête SQL, lecture de fichier, appel à une autre API), il la délègue au système et passe à la requête suivante. Quand le résultat est prêt, une fonction de rappel est placée dans la boucle d'événements (event loop) et exécutée.

Boucle d'événements de Node.js

La boucle d'événements traite les requêtes sans attendre la fin des opérations lentes.

const fs = require('fs');

console.log('1. Début');

fs.readFile('notes.txt', 'utf8', (err, contenu) => {
  console.log('3. Fichier lu :', contenu);
});

console.log('2. Fin du script (le fichier est encore en cours de lecture)');

L'ordre d'affichage est 1, 2, 3: Node.js n'attend pas la fin de la lecture du fichier. C'est pour cela que vous utiliserez très souvent async / await dans NestJS (chapitre 04).

Conséquence pratique: un calcul très long et synchrone (une boucle de plusieurs secondes) bloque tout le serveur, car il occupe l'unique fil d'exécution. Les opérations lentes doivent être asynchrones.

Les versions de Node.js

Une nouvelle version majeure sort tous les six mois. Il existe deux types de versions :

  • LTS (Long Term Support) : versions paires, stables, maintenues pendant environ trois ans. C'est celle à installer pour le développement et la production.
  • Current: la toute dernière version, avec les nouveautés, pour les tests.

Les versions actuelles de NestJS demandent une version récente de Node.js (20 ou plus). Prenez la dernière LTS affichée sur nodejs.org.

Installer Node.js

Windows et macOS: téléchargez l'installeur LTS sur nodejs.org et laissez les options par défaut. npm est installé en même temps.

Linux (Debian / Ubuntu): la version des dépôts est souvent ancienne. Utilisez plutôt le dépôt NodeSource ou nvm (ci-dessous).

Avec un gestionnaire de versions (recommandé): nvm (Node Version Manager) permet d'installer plusieurs versions et de passer de l'une à l'autre selon les projets. Sous Windows, on utilise nvm-windows.

# Après installation de nvm (ou nvm-windows)
nvm install lts      # installe la dernière LTS
nvm use lts          # l'active
nvm list             # liste les versions installées
Vérifier l'installation

Ouvrez un nouveau terminal (invite de commandes, PowerShell ou terminal de VS Code) :

node -v     # affiche par exemple v24.x.x
npm -v      # affiche la version de npm
La console interactive (REPL)

La commande node seule ouvre une console où l'on peut tester du JavaScript ligne par ligne. On en sort avec .exit ou deux fois Ctrl+C.

> 2 + 3
5
> const notes = [12, 15, 9]
> notes.reduce((a, b) => a + b) / notes.length
12
> process.version
'v24.x.x'
Exécuter un fichier JavaScript
// bonjour.js
const nom = process.argv[2] ?? 'stagiaire';
console.log(`Bonjour ${nom} ! Node.js ${process.version} sur ${process.platform}`);
node bonjour.js          # Bonjour stagiaire ! ...
node bonjour.js Ines     # Bonjour Ines ! ...
node --watch bonjour.js  # relance automatiquement à chaque modification
Activités

Activité 1 Installer et vérifier Node.js

  1. Installez la version LTS de Node.js.
  2. Dans un nouveau terminal, affichez les versions de Node.js et de npm.
  3. Ouvrez la console interactive et calculez la moyenne de [14, 11.5, 16, 9].
  4. Affichez process.platform et os.cpus().length (après const os = require('os')). Que représentent ces valeurs ?
Voir le corrigé

La moyenne vaut 12.625. process.platform donne le système (win32, linux, darwin pour macOS) ; os.cpus().length donne le nombre de cœurs du processeur. Si node n'est pas reconnu, fermez puis rouvrez le terminal (ou redémarrez l'ordinateur) pour recharger la variable PATH.

Activité 2 Observer le fonctionnement asynchrone

Créez un fichier notes.txt contenant 14 ; 12 ; 16 puis le fichier de l'exemple ci-dessus. Exécutez-le et notez l'ordre d'affichage. Remplacez ensuite fs.readFile par fs.readFileSync (sans fonction de rappel) : que change-t-il ?

Voir le corrigé

Avec readFile: 1, 2, 3. Avec readFileSync, le programme attend la fin de la lecture et l'ordre devient 1, 3, 2 :

const contenu = fs.readFileSync('notes.txt', 'utf8');
console.log('3. Fichier lu :', contenu);

La version synchrone bloque le fil d'exécution : à éviter dans un serveur.

Activité 3 Un serveur en 10 lignes

Écrivez serveur.js qui répond sur le port 3000 à toutes les requêtes par le JSON { "statut": "ok", "heure": "..." }. Lancez-le avec node --watch serveur.js, testez dans le navigateur, puis modifiez le message sans relancer manuellement.

Voir le corrigé
const http = require('http');

http.createServer((req, res) => {
  res.writeHead(200, { 'Content-Type': 'application/json' });
  res.end(JSON.stringify({ statut: 'ok', heure: new Date().toLocaleTimeString('fr-FR') }));
}).listen(3000, () => console.log('http://localhost:3000'));

À retenir

  • Node.js est un environnement d'exécution JavaScript côté serveur, basé sur V8.
  • Il est non bloquant : les opérations lentes sont déléguées et gérées par la boucle d'événements.
  • On installe toujours une version LTS ; nvm permet de gérer plusieurs versions.
  • node -v et npm -v vérifient l'installation ; node fichier.js exécute un script.