In this introductory French lecture, the speaker explains how JavaScript, traditionally used only in browsers for front‑end development, can also run on the server thanks to Node.js. He begins by contrasting client‑side JavaScript (executed by the V8 engine in Chrome) with classic server‑side languages such as PHP, Perl, Ruby, and Python, and notes the common perception that JavaScript merely “spices” the UI. He then recounts Ryan Dahl’s breakthrough of extracting the V8 engine from Chrome to create Node.js, an environment that executes JavaScript outside the browser. The core technical advantage highlighted is Node’s event loop and non‑blocking, asynchronous I/O, which allow a single‑threaded program to handle many concurrent requests without the latency problems that arise in traditional blocking architectures (e.g., when a server waits for a database query). This makes Node.js well‑suited for highly scalable, real‑time, and concurrent web applications. The lecture also stresses the practical benefit of using a single language—JavaScript—on both client and server, simplifying the path to full‑stack development. Finally, the speaker warns that building a web server with Node’s native APIs can be cumbersome because developers must manually manage request listening, headers, etc., and previews the next videos where he will first show the low‑level native approach and then adopt the Express framework to streamline development. The overall message is that Node.js offers a modern, efficient alternative to traditional back‑end stacks, especially for applications that need to scale and handle real‑time interactions.
Chapters
Bonjour à tous et bienvenue dans cette nouvelle série de leçons sur l'environnement d'exécution Node.js. Jusqu'ici, nous avons utilisé du JavaScript côté client, c'est-à-dire que l'ensemble des scripts que nous avons écrits avec ce langage sont destinés à être exécutés sur le client ou navigateur. En effet, ce dernier est équipé d'un moteur d'exécution qui interprète le JavaScript comme le moteur V8 utilisé par Chrome. Ce qui permet de donner vie à des applications interactives en invoquant les gestionnaires d'événements ainsi que d'autres fonctionnalités caractéristiques au langage, comme la manipulation du DOM. On parle alors de développement Front-End, car l'objectif du JavaScript dans ce cas consiste à présenter une interface de navigation, dite aussi User Interface, agréable et interactive, en toute évidence aux côtés du HTML et du CSS. En d'autre part, si on souhaite créer des sites ou applications web dynamiques, on fait appel à un langage qui s'exécute côté serveur, en l'occurrence le langage PHP qui est très célèbre au milieu des développeurs backend. Bien évidemment, il y a d'autres langages dits CGI qui s'exécutent aussi sur le serveur et qui ont la même finalité que le langage PHP, comme Perl, Ruby, Python, etc. Donc, l'image ancrée dans l'esprit des gens à l'égard du JavaScript c'est qu'il sert à ajouter de l'assaisonnement à la recette afin d'accentuer le goût. En effet, JavaScript est là pour soigner l'interface de navigation, ce qui veut dire que l'on peut bien s'en passer. Tout en garantissant un fonctionnement acceptable de notre site ou application web. Bien entendu, on peut interagir avec le serveur à l'aide du JavaScript, notamment via l'objet XMLHttpRequest rendu célèbre au sein de la technologie AJAX, ou l'API Fetch qui est une technique plus récente, et qui permettent d'envoyer des requêtes au serveur et récupérer des réponses de celui-ci dans le mode asynchrone, ce qui est plutôt très pratique dans la plupart des cas. Cependant, JavaScript continue toujours à s'exécuter sur le navigateur et ne fait qu'interagir avec le serveur via des requêtes et des réponses. Il y a quelques années, un ingénieur software dénommé Ryan Dahl a eu l'idée brillante d'extraire le moteur JavaScript V8 de Chrome et de l'exécuter en dehors du navigateur. C'est ainsi qu'est né l'environnement d'exécution Node.js. Node.js est un environnement d'exécution qui permet d'interpréter du JavaScript en dehors du navigateur. Cet aspect a permis au langage de détacher l'étiquette côté client qui lui a toujours été collée et de devenir ainsi un langage qui peut s'exécuter sur le serveur. En effet, à l'aide de Node.js on peut développer des sites et applications web dynamiques exactement comme on le fait dans le langage PHP. Néanmoins, l'arrivée d'un nouveau venu au milieu de plusieurs autres langages qui ont fait leurs preuves durant des années dans le domaine du backend doit convaincre les développeurs de ses performances pour les pousser à s'y intéresser. Justement, l'argument présenté par Node.js est plus que convaincant. Il s'agit de sa capacité à évoluer dans des environnements concurrentiels avec une forte probabilité de monter en charge. En informatique, on appelle un environnement concurrentiel ou de concurrence un environnement où plusieurs appels simultanés peuvent être passés à un programme. Par nature, un programme informatique s'exécute de manière séquentielle, c'est-à-dire qu'en cas de plusieurs appels, il doit les traiter un par un. En d'autres termes, le programme prend en charge le premier appel, prépare toutes les ressources dont l'appelant a besoin, puis les lui envoie en guise de réponse. Ensuite, il prend le deuxième appel et il réexécute le même processus. Si le nombre d'appels devenait très important, ce que l'on appelle la montée en charge, alors l'application en question ne serait plus en mesure de traiter toutes les demandes en manifestant une latence importante, voire un arrêt complet du processus requête/réponse. Il s'agit là d'un scénario typique qui pourrait survenir dans des applications Web. En effet, le problème ne vient pas directement du nombre d'appels mais du temps nécessaire pour finaliser la réponse de chacun d'entre eux. À titre d'exemple, imaginez que le serveur a reçu un premier appel ou requête. Qui nécessite la recherche d'une information dans une base de données. Alors le serveur après avoir reçu et analysé la requête du client, doit à son tour envoyer une requête à la base de données qui entamera le processus de recherche de l'information voulue. Quand celle-ci sera récupérée, elle sera acheminée au serveur afin de l'inclure à la réponse que l'on envoie ensuite au demandeur ou client. C'est seulement à ce moment-là qu'il pourra prendre en charge le deuxième appel. Donc, vous avez sans doute compris que la tâche qui risque de prendre beaucoup de temps, n'est ni l'analyse de la requête, ni l'envoi de la réponse, mais c'est le fait de fouiller dans la base de données pour trouver la bonne information, d'autant plus si la base renferme des millions d'enregistrements. Avec la multiplication des requêtes de ce genre, le temps de traitement s'accumulera conduisant ainsi à l'effet boule de neige qui pourrait conduire à l'effondrement du processus. Et si, au moment où la base de données est occupée à chercher la bonne information, le serveur prenait un deuxième appel, puis un troisième appel, etc. Et quand l'information sera renvoyée par la base de données, à ce moment-là, le serveur se chargera de la retransférer au bon client. Vous constatez que comme si le serveur travaille en parallèle plutôt qu'en séquence, et c'est justement ce que Node.js permet de faire en tirant profit de la boucle d'événements qui caractérise le JavaScript, bien que ce dernier soit un single thread. Cela donne lieu à un processus requête-réponse dans le mode asynchrone ou bien non bloquant. Par conséquent, avec Node.js on peut envisager des applications web avec une forte probabilité de monter en charge et des applications temps réel et concurrentes plus rapides. Un autre avantage de taille qui marque cet environnement, c'est l'utilisation d'un seul langage de programmation qui est le JavaScript pour le serveur, alors que c'est le même langage qui est utilisé côté client, ce qui facilite aux développeurs de se convertir en full stack, vu qu'ils n'ont besoin de maîtriser qu'un seul langage pour faire du frontend et du backend. Avant de finir cette leçon d'introduction, il convient de mentionner que l'utilisation des fonctionnalités natives de Node.js pour monter une application web pourrait s'avérer fastidieuse, car c'est à nous de développer les différents aspects d'un serveur web comme l'écoute des requêtes, envoie des en-têtes, etc. Alors que ces choses-là sont faites automatiquement par des serveurs web classiques comme Apache ou Nginx. Donc, dans les vidéos qui vont suivre, je vais vous montrer brièvement comment utiliser ces fonctionnalités natives juste pour avoir une idée plus claire sur le fonctionnement de cet environnement. Par contre, nous allons adopter un framework Node.js nommé Express pour faire des opérations plus poussées et développer des applications plus complètes de manière plus facile et fluide. Merci pour votre attention et à la vidéo prochaine.