Pendant dix ans, JavaScript n'a su vivre que dans un onglet. Écrire un serveur, un script de sauvegarde ou un outil en ligne de commande demandait un autre langage.
Node.js a supprimé cette frontière en emportant le moteur du navigateur ailleurs.
Définition
Node.js est un environnement d'exécution qui fait tourner du JavaScript en dehors du navigateur. Il embarque le moteur V8 de Chrome et lui ajoute ce qu'un onglet n'a pas le droit de faire : lire des fichiers, ouvrir un port, lancer d'autres programmes, lire des variables d'environnement.
import { readFile } from "node:fs/promises";
const contenu = await readFile("factures.json", "utf8");
const factures = JSON.parse(contenu);
const total = factures.reduce((somme, f) => somme + f.montant, 0);
console.log(`${factures.length} factures, ${total} euros`);Le préfixe node: désigne un module fourni par l'environnement lui-même, sans installation. La syntaxe, elle, est celle de tous les jours : Array.reduce(), JSON et await se comportent exactement comme dans un navigateur. C'est ce qui rend l'environnement rapide à apprendre, puisque tout le langage se transporte et qu'il ne reste que la bibliothèque autour à découvrir.
Ce qui change, ce qui reste
| Disponible dans Node.js | Disponible dans le navigateur |
|---|---|
| process, pour les arguments et l'environnement | window, l'objet global de la page |
| node:fs, pour lire et écrire des fichiers | localStorage, pour un stockage limité |
| node:http, pour écouter sur un port | document et l'arbre de la page |
Le langage est le même des deux côtés : Array (tableau), Promise, class ou Map ne changent pas d'un environnement à l'autre. Ce qui diffère, ce sont les objets que l'environnement met à disposition autour.
Un seul fil, jamais bloqué
Node exécute le code applicatif sur un unique fil d'exécution. Il tient la charge parce que les opérations lentes, disque et réseau, sont déléguées au système et rendues plus tard par la Event loop (boucle d'événements), plutôt qu'attendues sur place. Ce même modèle explique pourquoi de très nombreuses connexions simultanées coûtent si peu ici, là où un fil du système d'exploitation par connexion aurait coûté bien davantage.
Ce modèle a un revers : un calcul long bloque tout le serveur, puisque personne d'autre ne tient le fil. Les traitements coûteux se confient à un fil de travail dédié, ou à un autre processus.
Questions fréquentes
Node.js est-il un langage ?
Non, le langage reste JavaScript. Node.js est l'environnement qui l'exécute, au même titre que le navigateur, avec sa propre bibliothèque de modules. Confondre les deux amène à chercher du côté du langage des fonctions qui appartiennent en réalité à l'environnement.
Quelle version installer ?
Toujours une version portant un numéro majeur pair, dite à support long terme : elle reçoit les correctifs de sécurité pendant environ trois ans. Les versions impaires servent aux essais et cessent d'être suivies rapidement. Un gestionnaire de versions permet d'en garder plusieurs et de basculer par projet.
Node convient-il à tout ?
Il excelle sur ce qui attend beaucoup et calcule peu : API, serveurs de fichiers, outils en ligne de commande, traitements pilotés par le réseau. Pour du calcul intensif et continu, d'autres environnements gardent l'avantage. La formation Node.js part de ce partage pour construire une API complète.