NodeJS, une définition

Spread the love

Node ? JS ? NodeJS fait partie de l’univers JavaScript. Si la plupart des frameworks ciblent le front-end, Node (on abrège souvent NodeJS en Node), est côté back-end, donc côté serveur et non côté navigateur / client.

NodeJS, une définition

NodeJS est un environnement serveur basé sur le langage JavaScript. Il a été créé en 2009 par Ryan Dahl. Il souhaitait améliorer la barre de progression de chargement de fichiers sur le site Flickr. En quelques années, Node est devenu une référence pour les développeurs JavaScript et la communauté n’a cessé de s’étendre. Node est open source et il évolue plusieurs fois par an.

NodeJS n’est pas à proprement parlé un environnement serveur. Il s’agit avant tout d’exécuter et de traiter des projets / applications JS côté serveur et non côté client (navigateur). Le principe est le même que PHP ou un site web Ruby : le code s’exécute côté serveur. Ensuite, on utilise le classique http pour accéder à son application JS.

Node est conseillé quand vous avez besoin de traitements lourds sur des données, des applications complexes avec beaucoup de trafics réseaux ou pour des sites de type Single-Page qui peuvent exiger d’importantes ressources pour générer la page. Node est donc à privilégier dès que vous avez besoin de traitement des nombreuses données nécessitant de nombreuses interactions / échanges avec un SGBD. Et il est conçu pour supporter la montée en charge en cas de forte audience du site.

publicité

Ecosystème

NodeJS a construit un véritable écosystème autour de lui :

  • Frameworks dédiés : Adonis, diet.js, Ionic, Meteor, etc.
  • Outils : TestCafé, Mongoose, Gulp, Unit.js, etc.

Ces frameworks et outils sont soit dédiés Node ou supportant Node. Vous pouvez aussi intégrer un framework JS front-end à Node. Le couple Node + Ionic est un classique.

Architecture modulaire et composants essentiels

Contrairement à ce que l’on pourrait penser, Node n’est pas 100 % JavaScript. En réalité, une partie du cœur de la plateforme est en C++ pour être natif et offrir de bonnes performances. Deux composants essentiels composent Node : V8 et libuv. V8 est le moteur d’exécution JavaScript de Google que l’on retrouve dans Chromium / Chrome. Il est là pour exécuter le code JS directement en back-end. V8 est écrit en C++ et est natif Linux, macOS et Windows. Sans un moteur d’exécution JS, Node serait incapable de comprendre et d’exécuter le moindre code JS.

Libuv est une librairie multiplateforme en C. Il s’agit d’un module essentiel à Node. Elle supporte les sockets TCP, la résolution DNS, traitement fichiers côté I/O (entrée / sortie), gestion des threads. La boucle d’événements (ou event loop) est gérée par cette librairie. Il s’agit de savoir quand exécuter une opération / une action Node. Libuv doit communiquer avec le système d’exploitation sur lequel s’exécute Node. C’est un des mécanismes les plus critiques de Node et de tout serveur. Si on résume libuv, il s’occupe du réseau, des échanges avec le système, et de la gestion des fichiers.

Bien entendu, pour les développeurs, utilisateurs et responsables réseau, ils ne voient que Node, tout est transparent.

Fork et alternative

Le projet fut forké au milieu des années 2010, avec assez peu de succès. Il s’agissait du projet IO.JS. Le créateur de Node a décidé de créer une alternative crédible à Node, même si le but n’était pas d’être en opposition frontale : Deno. Le projet est présenté comme un runtime moderne et sécurisé de JavaScript et de TypeScript, reposant sur le moteur V8 et le langage Rust.

Leave a Reply