Qu'est-ce que Node.JS et à quoi sert-il ?

0
220

Si vous faites du développement Web, vous allez probablement avoir apprendre et écrire JavaScript à un moment donné. Node est destiné à simplifier le développement d'applications Web en unifiant les langages côté serveur et côté client.

Qu'est-ce que Node ?

Node.JS , communément appelé simplement Node, est un environnement d'exécution JavaScript qui vous permet d'exécuter du code JS en dehors d'un navigateur Web. Node est construit sur le moteur JavaScript V8 de Google, le même que celui utilisé pour le traitement dans Chrome.

Il est couramment utilisé pour créer des applications, travailler avec des frameworks d'applications Web modernes et créer des scripts côté serveur avec JS. En pratique, Node vous permet d'exécuter des fichiers .js avec la commande node de la même manière que vous exécuteriez des fichiers .py avec python :

node main.js

Le code JavaScript fonctionne un peu différemment lorsqu'il est exécuté dans Node. Tout d'abord, il n'y a pas de DOM (le code HTML chargé d'une page Web), vous ne pouvez donc pas accéder aux éléments HTML ou utiliser une bibliothèque comme jQuery avec beaucoup d'effet (bien qu'il existe des alternatives). Mais vous avez accès aux ressources système et pouvez lire et écrire des fichiers, établir des connexions réseau et même servir des applications.

Node est également utilisé pour créer des applications de bureau, grâce à l'utilisation d'un framework appelé Electron. Electron alimente Slack, Discord, Visual Studio Code et Skype. Essentiellement, il exécute une version allégée de Chrome conçue pour le bureau, et l'application elle-même n'est en fait qu'une application Web. En conséquence, les applications Electron sont très gourmandes en RAM et fonctionneront un peu moins bien que leurs homologues natives, mais ce commerce est souvent fait pour l'uniformité sur tous les systèmes d'exploitation et sur le Web.

L'écosystème de nœuds (modules npm)

Le nœud lui-même est cool, mais il ne serait pas près de ce qu'il est aujourd'hui s'il n'y avait pas npm, le gestionnaire de paquets Node. npm permet à Node d'être étendu avec des frameworks et des plugins, et permet au code d'être facilement installé et incorporé dans un nouveau projet.

Publicité

Par exemple, supposons que vous travaillez sur un script et que vous devez envoyer une requête POST à ​​une ressource externe. Vous pouvez utiliser la méthode d'extraction intégrée de JS, ou vous pouvez utiliser axios, qui utilise des promesses et est plus facile à utiliser. Si vous vouliez ajouter axios à votre projet, vous voudriez déplacer votre script dans son propre dossier et exécuter :

npm init npm install axios

Cela crée un fichier appelé package.json, qui garde une trace des paramètres du projet et des packages installés. La commande npm install crée un dossier appelé node_modules, qui stocke les modules téléchargés. Attention, ce dossier peut être très volumineux sur de gros projets avec de nombreux modules.

Pour utiliser axios dans votre script, vous devez mettre cette ligne tout en haut :

const axios = exiger('axios');

Ou, dans la syntaxe ES6 :

importer des axios depuis 'axios' ;

Cela importe le module depuis node_modules et permet à votre script d'y accéder. À partir de là, vous pouvez l'utiliser comme s'il faisait partie de votre projet et qu'il s'agissait simplement d'une autre fonction que vous avez créée.

Axios n'est qu'un exemple de base d'un utilitaire npm utile. Vous avez probablement entendu parler d'autres modules comme React, Angular ou Vue ; ce sont tous des frameworks d'applications Web complets utilisés pour créer des applications interactives qui s'exécutent dans le navigateur. Les applications créées avec ces frameworks sont généralement appelées “applications de nœuds.” Bien qu'ils ne fonctionnent pas réellement avec Node, comme le produit final sera du HTML statique que vous pourrez utiliser avec n'importe quel ancien serveur Web, Node est utilisé pour le développement et les packages sont installés à partir de l'écosystème Node avec npm.

Publicité

C'est du JavaScript, après tout. Souvent, le code de développement utilisera “next-gen” JavaScript comme ES6 et être compilé avec Webpack et Babel en un seul gros “bundle.js” fichier qui peut être servi au client pour qu'il s'exécute.

Comment fonctionne Node avec nginx et Apache ?

Node lui-même ne s'interface pas directement avec nginx ou Apache, tout ce que Node fait est d'exécuter des fichiers .js. Cependant, les applications Node construites avec React ou d'autres frameworks fonctionnent un peu différemment des pages HTML normales.

Avec React, vous servez essentiellement une page HTML vierge qui charge un fichier bundle.js. Ce fichier groupé fonctionne comme n'importe quel autre fichier javaScript, et vous pouvez utiliser nginx ou Apache comme serveur Web pour l'héberger. Le bundle charge React, qui se rendra ensuite sur la page Web et affichera votre contenu. Tout le contenu est contenu dans le fichier bundle.

Une chose à noter est une bibliothèque populaire appelée Express. Express sert du contenu Web et peut fonctionner comme un serveur HTTP. Il est couramment utilisé comme routeur pour créer une API REST basée sur les nœuds ; Express peut écouter sur un port, transmettre la requête à une autre fonction (généralement en accédant à une autre ressource comme une base de données), puis renvoyer une réponse HTTP.

Dans ce cas, vous placeriez Express derrière le serveur nginx que vous utilisez pour votre contenu statique et acheminerez toutes les routes /api vers Express. Cela permet à votre application Web d'accéder à des ressources externes et d'utiliser pleinement la puissance de script côté serveur de Node et sa capacité à s'interfacer avec les bases de données. Vous pouvez utiliser nginx comme proxy inverse pour la route /api et l'utiliser comme serveur Web pour l'autre contenu statique.

Cependant, Express n'est pas un serveur Web. Il ne doit pas remplacer nginx dans cet exemple. Il peut fonctionner comme un seul, et il est très utile de configurer un simple serveur Express pour le développement, ou une simple page qui ne reçoit pas beaucoup de trafic. Mais c'est loin des performances de nginx et Apache, qui sont des applications natives. Si vous créez une véritable application Web, servez-la avec nginx et utilisez Express uniquement pour servir des API.

Dois-je utiliser Node pour mon Site Web ?

Êtes-vous en train de créer une application Web ? Si tel est le cas, vous devriez sérieusement envisager Node. Les alternatives seraient Ruby on Rails, Laravel avec PHP et Django avec Python. Mais Node a de loin la plus grande communauté et a beaucoup de choix en matière de frameworks. Si vous n'aimez pas Ruby on Rails, vous êtes coincé avec sans apprendre une autre langue, mais le passage d'un framework comme React à Vue est beaucoup plus simple, car ils sont tous les deux JavaScript.

Publicité

Si vous ne créez pas d'application Web, vous n'avez probablement pas besoin de Node. Il n'est pas destiné aux pages statiques. Vous le pouvez certainement, mais vous n'y verrez pas grand-chose. Si vous envisagez d'utiliser un framework Web complet comme React pour un site statique (ou même principalement statique), vous voudrez peut-être reconsidérer, car React introduit beaucoup de frais généraux sur votre site. Les temps de chargement de React sont généralement beaucoup plus lents sans rendu côté serveur, ce qui est bien pour les applications Web conçues pour de longues durées de session, mais pas pour un blog ou tout ce qui recherche un bon référencement. Vanilla JS peut faire pas mal de manipulations DOM tout seul, en particulier avec l'aide de jQuery.