Introduction à Node.js
Node.js est un environnement d'exécution JavaScript open-source et multiplateforme. C'est un outil populaire pour presque tous les types de projets !
Node.js exécute le moteur JavaScript V8, le cœur de Google Chrome, en dehors du navigateur. Cela permet à Node.js d'être très performant.
Une application Node.js s'exécute dans un seul processus, sans créer un nouveau thread pour chaque requête. Node.js fournit un ensemble de primitives d'E/S asynchrones dans sa bibliothèque standard qui empêchent le blocage du code JavaScript et, généralement, les bibliothèques dans Node.js sont écrites en utilisant des paradigmes non bloquants, faisant du comportement bloquant l'exception plutôt que la norme.
Lorsque Node.js effectue une opération d'E/S, comme la lecture depuis le réseau, l'accès à une base de données ou au système de fichiers, au lieu de bloquer le thread et de gaspiller des cycles CPU en attendant, Node.js reprendra les opérations lorsque la réponse sera disponible.
Cela permet à Node.js de gérer des milliers de connexions concurrentes avec un seul serveur sans introduire la charge de gérer la concurrence des threads, ce qui pourrait être une source importante de bogues.
Node.js possède un avantage unique car des millions de développeurs frontend qui écrivent du JavaScript pour le navigateur sont désormais capables d'écrire le code côté serveur en plus du code côté client sans avoir besoin d'apprendre un langage complètement différent.
Dans Node.js, les nouvelles normes ECMAScript peuvent être utilisées sans problème, car vous n'avez pas à attendre que tous vos utilisateurs mettent à jour leurs navigateurs - vous êtes responsable du choix de la version ECMAScript à utiliser en changeant la version de Node.js, et vous pouvez également activer des fonctionnalités expérimentales spécifiques en exécutant Node.js avec des drapeaux.
Un exemple d'application Node.js
L'exemple Hello World le plus courant de Node.js est un serveur web :
import { createServer } from 'node:http'
const hostname = '127.0.0.1'
const port = 3000
const server = createServer((req, res) => {
res.statusCode = 200
res.setHeader('Content-Type', 'text/plain')
res.end('Hello World')
})
server.listen(port, hostname, () => {
console.log(`Serveur en cours d'exécution sur http://${hostname}:${port}/`)
})
Pour exécuter cet extrait de code, enregistrez-le sous forme de fichier server.js
et exécutez node server.js
dans votre terminal. Si vous utilisez la version mjs du code, vous devez l'enregistrer sous forme de fichier server.mjs
et exécuter node server.mjs
dans votre terminal.
Ce code inclut d'abord le module http de Node.js.
Node.js possède une fantastique bibliothèque standard, y compris une prise en charge de premier ordre pour la mise en réseau.
La méthode createServer()
de http
crée un nouveau serveur HTTP et le renvoie.
Le serveur est configuré pour écouter sur le port et le nom d'hôte spécifiés. Lorsque le serveur est prêt, la fonction de rappel est appelée, dans ce cas, nous informant que le serveur est en cours d'exécution.
Chaque fois qu'une nouvelle requête est reçue, l'événement requête est appelé, fournissant deux objets : une requête (un objet http.IncomingMessage
) et une réponse (un objet http.ServerResponse
).
Ces deux objets sont essentiels pour gérer l'appel HTTP.
Le premier fournit les détails de la requête. Dans cet exemple simple, cela n'est pas utilisé, mais vous pouvez accéder aux en-têtes de requête et aux données de requête.
Le second est utilisé pour renvoyer des données à l'appelant.
Dans ce cas avec :
res.setHeader('Content-Type', 'text/plain')
nous définissons la propriété statusCode sur 200, pour indiquer une réponse réussie.
Nous définissons l'en-tête Content-Type :
res.setHeader('Content-Type', 'text/plain')
et nous fermons la réponse, en ajoutant le contenu comme argument à end()
:
res.end('Hello World')
Cela enverra la réponse au client.