Qu'est-ce que Node.JS et à quoi sert-il?
Si vous faites du développement Web, vous devrez probablement apprendre et écrire du JavaScript à un moment donné. Node vise à simplifier le développement d'applications Web en unifiant les langages côté serveur et côté client.
Sommaire
Qu'est-ce que Node?
Node.JS, communément appelé simplement Node, est un moteur d'exécution JavaScript qui vous permet d'exécuter du code JS en dehors d'un navigateur Web. Node est basé 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 .js
fichiers avec le node
commande similaire à la façon dont vous exécuteriez .py
fichiers avec python
:
node main.js
Le code JavaScript fonctionne un peu différemment lors de l'exécution dans Node. Tout d'abord, il n'y a pas de DOM (le 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 natifs, 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)
Node lui-même est cool, mais il ne serait nulle part près de là où il se trouve aujourd'hui s'il n'était pas pour npm
, le gestionnaire de packages 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.
Par exemple, supposons que vous travaillez sur un script et que vous devez envoyer une requête POST à une ressource externe. Vous pouvez utiliser le JS intégré fetch
méthode, ou vous pouvez utiliser axios, qui utilise des promesses et est plus facile à utiliser. Si vous souhaitez ajouter axios à votre projet, vous souhaitez déplacer votre script vers son propre dossier et exécuter:
npm init npm install axios
Cela crée un fichier appelé package.json
, qui assure le suivi des paramètres du projet et des packages installés. le npm install
La commande créera un dossier appelé node_modules
, qui stocke les modules téléchargés. Attention, ce dossier peut être très volumineux sur des projets volumineux comportant de nombreux modules.
Pour utiliser axios dans votre script, vous devez mettre cette ligne tout en haut:
const axios = require('axios');
Ou, dans la syntaxe ES6:
import axios from 'axios';
Cela importe le module depuis node_modules
, et autorise votre script à y accéder. À partir de là, vous pouvez l'utiliser comme s'il faisait partie de votre projet et simplement une autre fonction que vous avez créée.
Axios est juste un exemple basique d'un npm
utilitaire. Vous avez probablement entendu parler d’autres modules tels que React, Angular ou Vue; tous ces éléments sont des cadres 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 communément appelées «applications de nœud». Bien qu'ils ne soient pas réellement exécutés avec Node, étant donné que le produit final sera du HTML statique que vous pourrez diffuser 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
.
Tout est en JavaScript, après tout. Souvent, le code de développement utilisera du JavaScript «nouvelle génération» comme ES6, et sera compilé avec Webpack et Babel dans un gros fichier «bundle.js» qui peut être servi au client pour qu'il s'exécute.
Comment Node fonctionne-t-il avec nginx et Apache?
Node lui-même ne s’interface pas directement avec nginx ou Apache – tout ce que fait Node est d’exécuter .js
des dossiers. Cependant, les applications Node créées avec React ou d'autres frameworks fonctionnent un peu différemment des pages HTML normales.
Avec React, vous diffusez essentiellement une page HTML vierge qui charge un bundle.js
fichier. Ce fichier bundle 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 s'affichera 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 des nœuds; Express peut écouter sur un port, transférer la requête vers 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 placez Express derrière le serveur nginx que vous utilisez pour votre contenu statique et acheminez tous /api
itinéraires 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 le /api
route et utilisez-le 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 serveur Express simple 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 d'Apache, qui sont des applications natives. Si vous créez une vraie application Web, diffusez-la avec nginx et utilisez Express uniquement pour diffuser des API.
Dois-je utiliser Node pour mon site Web?
Créez-vous 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é sans apprendre un autre langage, mais le passage d'un framework comme React à Vue est beaucoup plus simple, car ils sont tous les deux JavaScript.
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 certainement pouvez, mais vous ne verrez pas beaucoup d’avantages. Si vous prévoyez 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 un peu de manipulation DOM seul, en particulier avec l'aide de jQuery.