Node.js est un runtime qui exécute du JavaScript en dehors du navigateur : sur un serveur, dans un terminal ou comme outil en ligne de commande. Ce n'est pas un langage de programmation (le langage, c'est JavaScript) ni un framework (Express est un framework qui tourne sur Node.js). Il associe le moteur V8 de Google, qui exécute le JavaScript, à un event loop et à des API intégrées pour les fichiers, le réseau et les processus, que les navigateurs n'ont pas.
Le programme a affiché le contenu du fichier, la version majeure (v24) et undefined pour window, car Node.js n'a pas de page web pour vous en fournir un. fs et process n'existent que dans Node.js ; lancez les mêmes lignes dans un onglet de navigateur et la première lève une erreur.
Node.js, un framework ou un langage ?
Ni l'un ni l'autre. Le langage, c'est JavaScript. Node.js est le programme qui l'exécute, comme la JVM exécute Java ou CPython exécute Python. Les frameworks viennent par-dessus : Express, Fastify et NestJS sont des bibliothèques que vous installez dans un projet Node.js. La page Node.js vs JavaScript compare les deux en détail.
Sous le capot, Node.js se compose de quatre parties :
- V8, le moteur JavaScript de Chrome. Il transforme votre code en code machine et l'exécute.
- libuv, une bibliothèque C qui fournit l'event loop et fait le travail lent (disque, réseau, timers) en arrière-plan, puis rend le résultat à vos callbacks.
- Les API propres à Node :
fspour les fichiers,httppour les serveurs,path,process,crypto,eventset d'autres, disponibles avecrequireouimportsans rien installer. - npm, le gestionnaire de packages livré avec Node.js, qui donne accès au plus grand registre de packages de tous les langages.
Comment lancer un fichier Node.js
Installez Node.js depuis son site (choisissez la version LTS), puis vérifiez-le dans un terminal et lancez un fichier :
node --version # prints v24.x.x or similar
node app.js # runs app.js and exits when it has nothing left to do
node # with no file: an interactive prompt (the REPL)
Un programme se termine tout seul dès que plus rien n'attend : aucun timer, aucun serveur ouvert, aucune lecture de fichier en cours. C'est pourquoi un script se termine alors qu'un serveur web continue de tourner.
L'I/O non bloquante, l'idée centrale
Node.js n'attend pas le travail lent. Il lance une lecture de fichier ou une requête réseau, continue d'exécuter les lignes suivantes et appelle votre fonction quand le résultat est prêt.
Les deux lignes console.log après readFile se sont exécutées en premier, et le contenu du fichier est arrivé en dernier. C'est ainsi qu'un seul processus Node.js sert des milliers de connexions : pendant qu'une requête attend la base de données, l'event loop fait avancer les autres.
Node.js et le navigateur
| Navigateur | Node.js | |
|---|---|---|
| Tourne | Dans une page web | Dans un terminal ou sur un serveur |
| Possède | window, document, le DOM, localStorage | fs, process, http, Buffer, require |
| Objet global | window (et globalThis) | global (et globalThis) |
| Fichiers sur le disque | Aucun accès | Accès complet, avec les permissions de votre utilisateur |
setTimeout, console, fetch, URL | Oui | Oui |
À quoi sert Node.js
- Serveurs web et API : backends REST et GraphQL, souvent avec Express.
- Applications temps réel : chat, tableaux de bord en direct et jeux multijoueurs via WebSockets, où beaucoup de connexions restent ouvertes en même temps.
- Outils en ligne de commande : npm lui-même, Vite, ESLint, Prettier et le compilateur de TypeScript tournent tous sur Node.js.
- Scripts et automatisation : renommer des fichiers, appeler des API, migrer des données.
L'usage le plus courant est un serveur HTTP, et le module intégré http suffit pour un premier serveur :
Le serveur a répondu à GET /hello avec le chemin reçu. Remplacez le chemin par /anything dans la barre de requête et envoyez : la réponse suit, car ce serveur traite chaque URL avec une seule fonction.
Quand choisir Node.js
Choisissez Node.js quand le travail consiste surtout à attendre des I/O (requêtes, bases de données, fichiers) et que vous voulez un seul langage côté frontend et backend. Il convient moins aux longs calculs gourmands en CPU, comme l'encodage vidéo ou les gros calculs numériques, car un long calcul bloque l'unique thread JavaScript et toutes les autres requêtes l'attendent.
Questions fréquentes
Node.js, c'est du frontend ou du backend ?
Surtout du backend. Node.js tourne sur un serveur ou sur votre propre machine, pas dans le navigateur du visiteur. Les développeurs frontend s'en servent quand même tous les jours, car des outils comme npm, Vite et ESLint sont des programmes Node.js.
Qui a créé Node.js et quand ?
Ryan Dahl a publié Node.js en 2009. Il est aujourd'hui maintenu par l'OpenJS Foundation, avec une nouvelle version majeure tous les six mois, et les versions paires bénéficient d'un support long terme.
Faut-il connaître JavaScript avant Node.js ?
Oui, au moins les bases : variables, fonctions, objets, tableaux, et callbacks ou promesses. Node.js ajoute des API, pas de nouvelle syntaxe, donc tout ce que vous apprenez sur le langage s'applique directement.
Node.js est-il single-thread ?
Votre JavaScript tourne sur un seul thread. En coulisses, Node.js utilise un petit pool de threads pour le système de fichiers, le DNS et une partie de la crypto, donc une I/O lente ne bloque pas votre code pendant l'attente.