JavaScript côté serveur

Résumé Support

Maintenant que l'on a fait le tour des bases du langage JavaScript je vous propose de voir comment on va pouvoir utiliser ce langage côté serveur pour pouvoir intéragir avec le système (écriture / lecture de fichiers, création d'un serveur web...).

Plusieurs solutions

Il existe aujourd'hui plusieurs solutions qui permettent d'éxécuter du JavaScript côté serveur :

  • NodeJS initialement lancé en 2013 est la solution la plus répandue à l'heure actuelle.
  • Deno est une tentative du créateur de NodeJS de repartir sur de nouvelle base. Même si la technologie est intéréssante elle a du mal à obtenir suffisamment de traction (principalement à cause de son incompatibilité avec l'écosystème NodeJS déjà présent).
  • Bun est une initiative toute jeune (pas encore stable) qui se veut être une alternative à NodeJS en promettant notamment d'être compatible avec l'existant.

Pour la suite de cette formation on va se concentrer sur NodeJS car c'est à l'heure actuelle la solution la plus stable et la plus répandue.

Le principe de NodeJS

Le fonctionnement de NodeJS repose sur 2 fondations :

  • Le moteur JavaScript V8 open source de Google qui va permettre d'éxécuter le code JavaScript.
  • libuv qui permet de gérer l'I/O de manière asynchrone et qui permettra d'interagir avec le système (fichiers, réseaux...)

On ne va pas trop rentrer dans les détails mais cette combinaison permet d'accéder à des fonctionnalités systèmes de manière non bloquante (comme avec les timers que l'on a vu dans les bases du JavaScript).

import { readFile } from 'fs' readFile('MonFichier.txt', (err, content) => { if (err) { throw err; } console.log('Mon fichier : ', content); }); console.log('Autres opérations')

Cette approche permet au fil principal (celui qui éxécute le JavaScript) de traiter plusieurs choses pendant que le système travail ce qui permet d'en faire plus.