Node.js - 3.4 Le cycle de vie de Node et la boucle d'événements

Un serveur Node.js reste en marche sans qu'on écrive de boucle explicite. La raison est la boucle d'événements, qui continue tant qu'il reste des écouteurs enregistrés. Cette leçon explique ce mécanisme et montre comment arrêter le programme avec process.exit().

Pourquoi le programme ne se termine pas

Lorsqu'on lance un fichier avec node, Node.js analyse le code, enregistre les variables et les fonctions, puis exécute le programme. Pourtant, le programme ne se termine pas.

La raison est la boucle d'événements. Elle continue de fonctionner tant qu'il existe des écouteurs d'événements enregistrés. Lorsqu'on crée un serveur, il écoute les demandes entrantes, et cet écouteur ne s'arrête jamais.

Un modèle non bloquant

Node.js exécute le JavaScript sur un seul cœur. Au lieu d'attendre la fin d'une opération, il enregistre une fonction à exécuter plus tard, puis passe à la suite.

En arrière-plan, le système d'exploitation gère une partie du travail, ce qui permet d'utiliser plusieurs cœurs. Cette approche permet de traiter un grand nombre de demandes sans se bloquer.

Arrêter le programme avec process.exit

La fonction process.exit() quitte la boucle d'événements et termine le programme. Le formateur la présente pour comprendre le fonctionnement, car un serveur arrêté ne répond plus aux visiteurs.

Après cet appel, le serveur ne répond plus aux demandes, et le terminal reprend la main.

process.exit();

En résumé

Un serveur Node.js continue de tourner grâce à la boucle d'événements. Tant qu'un écouteur est enregistré, la boucle attend de nouveaux événements. Node.js exécute le code sans se bloquer en attendant les opérations. La fonction process.exit() quitte la boucle et termine le programme.

Points clés

  • La boucle d'événements continue tant qu'il existe des écouteurs enregistrés.
  • Un serveur crée un écouteur qui attend les demandes entrantes.
  • Le code JavaScript s'exécute sur un seul cœur, avec une partie du travail déléguée au système.
  • process.exit() quitte la boucle et termine le programme.
  • Un serveur arrêté ne répond plus aux visiteurs.

Questions fréquentes

Pourquoi un serveur ne s'arrête-t-il pas tout seul ?

La boucle d'événements attend toujours de nouveaux événements, comme les demandes entrantes.

Node.js utilise-t-il plusieurs cœurs ?

Le code JavaScript s'exécute sur un seul cœur. Le système d'exploitation gère toutefois une partie du travail en arrière-plan, sur plusieurs cœurs.

Faut-il appeler process.exit() dans un serveur ?

En général non, car un serveur arrêté ne répond plus aux visiteurs. Cet appel sert surtout à comprendre le fonctionnement.