JavaScript est l’un des langages de programmation les plus populaires au monde. Il alimente des millions de sites Web aujourd’hui et attire de nombreux développeurs et concepteurs pour créer des fonctionnalités pour le Web. Si vous débutez en programmation, JavaScript est l’un des meilleurs langages de programmation à connaître.
Pendant ses 20 premières années, JavaScript était principalement utilisé pour le scripting côté client. Étant donné que JavaScript ne pouvait être utilisé qu’à l’intérieur de la balise , les développeurs devaient travailler avec plusieurs langages et frameworks entre les composants côté client et côté serveur. Puis est arrivé Node.js, qui est un environnement d’exécution qui comprend tout ce qui est nécessaire pour exécuter un programme écrit en JavaScript.
Node.js est un environnement d’exécution open-source, multiplateforme et monofichier pour la création d’applications côté serveur et réseau rapides et évolutives. Il s’exécute sur le moteur d’exécution JavaScript V8 et utilise une architecture E/S non bloquante basée sur les événements, ce qui le rend efficace et adapté aux applications en temps réel.
Qu’est-ce que Node.js est écrit en?
Node.js est écrit en C, C++ et JavaScript.
Wikipedia définit Node.js comme “une compilation empaquetée du moteur JavaScript V8 de Google, de la couche d’abstraction de la plate-forme libuv et d’une bibliothèque centrale, qui est elle-même principalement écrite en JavaScript.”
Le runtime utilise Chrome V8 en interne, qui est le moteur d’exécution JavaScript, et il est également écrit en C++. Cela ajoute des cas d’utilisation supplémentaires au répertoire de Node.js, tels que l’accès à des fonctionnalités internes du système (comme le réseau).
Architecture de Node.js et fonctionnement
Node.js utilise l’architecture “Boucle d’événement monofilaire” pour gérer plusieurs clients en même temps. Pour comprendre en quoi cela diffère des autres runtimes, nous devons comprendre comment les clients concurrents multithreadés sont gérés dans des langages comme Java.
Dans un modèle de demande-réponse multithreadé, plusieurs clients envoient une demande et le serveur les traite chacun avant d’envoyer la réponse. Cependant, plusieurs threads sont utilisés pour traiter des appels concurrents. Ces threads sont définis dans un pool de threads, et à chaque fois qu’une demande arrive, un thread individuel est assigné pour la gérer.
Node.js fonctionne différemment. Examinons chaque étape qu’il suit :
- Node.js maintient un pool de threads limité pour servir les demandes.
- Chaque fois qu’une demande arrive, Node.js la place dans une file d’attente.
- Maintenant, la “boucle d’événement” monofilaire – le composant central – entre en jeu. Cette boucle d’événement attend indéfiniment les demandes.
- Lorsqu’une demande arrive, la boucle la récupère de la file d’attente et vérifie si elle nécessite une opération d’entrée/sortie (E/S) bloquante. Si ce n’est pas le cas, elle traite la demande et envoie une réponse.
- Si la demande comporte une opération bloquante à effectuer, la boucle d’événement attribue un thread du pool de threads interne pour traiter la demande. Il y a un nombre limité de threads internes disponibles. Ce groupe de threads auxiliaires est appelé le groupe de travailleurs.
- La boucle d’événement suit les demandes bloquantes et les place dans la file d’attente une fois la tâche bloquante traitée. C’est ainsi qu’elle maintient sa nature non bloquante.
Étant donné que Node.js utilise moins de threads, il utilise moins de ressources/mémoire, ce qui permet une exécution plus rapide des tâches. Ainsi, pour nos besoins, cette architecture monofilaire est équivalente à une architecture multithreadée. Lorsque vous avez besoin de traiter des tâches intensives en termes de données, l’utilisation de langages multithreadés tels que Java a beaucoup plus de sens. Mais pour les applications en temps réel, Node.js est le choix évident.
Caractéristiques de Node.js
Node.js a connu une croissance rapide ces dernières années. Cela est dû à la longue liste de fonctionnalités qu’il offre :
- Facilité – Node.js est assez facile à prendre en main. C’est le choix idéal pour les débutants en développement web. Avec de nombreux tutoriels et une vaste communauté, il est très facile de commencer.
- Extensibilité – Il offre une grande extensibilité pour les applications. Node.js, étant monofilaire, est capable de gérer un grand nombre de connexions simultanées avec un débit élevé.
- Rapidité – L’exécution du thread non bloquant rend Node.js encore plus rapide et plus efficace.
- Paquets – Un vaste ensemble de packages Node.js open-source est disponible pour simplifier votre travail. Il existe aujourd’hui plus d’un million de packages dans l’écosystème NPM.
- Backend solide – Node.js est écrit en C et C++, ce qui le rend rapide et ajoute des fonctionnalités telles que la prise en charge du réseau.
- Multiplateforme – La prise en charge multiplateforme vous permet de créer des sites SaaS, des applications de bureau et même des applications mobiles, le tout à l’aide de Node.js.
- Maintenabilité – Node.js est un choix facile pour les développeurs, car le frontend et le backend peuvent être gérés avec JavaScript comme unique langage.
Taille du marché
Il y a eu une croissance immense du nombre de sites web au cours des deux dernières décennies et, comme prévu, Node.js connaît également une croissance rapide. Le runtime populaire a déjà franchi le seuil du milliard de téléchargements en 2018 et, selon W3Techs, Node.js est utilisé par 1,2% de tous les sites web dans le monde. Cela représente plus de 20 millions de sites au total sur Internet.
Sans surprise, c’est également un choix populaire pour des millions d’entreprises. Voici quelques exemples populaires qui utilisent Node.js aujourd’hui :
- Spotify
- eBay
- Godaddy
Applications de Node.js
Node.js est utilisé pour une grande variété d’applications. Explorons quelques cas d’utilisation populaires où Node.js est un bon choix :
- Chats en temps réel – Grâce à sa nature asynchrone monofilaire, Node.js convient parfaitement au traitement des communications en temps réel. Il peut facilement être mis à l’échelle et est souvent utilisé pour créer des chatbots. Node.js permet également de créer facilement des fonctionnalités de chat supplémentaires, telles que les chats multi-utilisateurs et les notifications push.
- Internet des objets – Les applications IoT comprennent généralement plusieurs capteurs, car elles envoient fréquemment de petites quantités de données qui peuvent s’accumuler en un grand nombre de demandes. Node.js est un bon choix car il peut gérer rapidement ces demandes concurrentes.
- Flux de données – Des entreprises comme Netflix utilisent Node.js pour le streaming. Cela est principalement dû au fait que Node.js est léger et rapide, en plus de fournir une API de streaming native. Ces flux permettent aux utilisateurs de relier les demandes les unes aux autres, ce qui permet de diffuser les données directement vers leur destination finale.
- Applications complexes à page unique (SPA) – Dans les SPA, l’ensemble de l’application est chargé dans une seule page. Cela signifie généralement qu’il y a quelques demandes faites en arrière-plan pour des composants spécifiques. La boucle d’événement de Node.js vient à la rescousse ici, car elle traite les demandes de manière non bloquante.
- Applications basées sur des API REST – JavaScript est utilisé à la fois dans le frontend et le backend des sites. Ainsi, un serveur peut facilement communiquer avec le frontend via des API REST en utilisant Node.js. Node.js fournit également des packages tels que Express.js et Koa qui facilitent encore plus la création d’applications web.
Node.js est-il un langage de programmation ?
En un mot : non.
Node.js n’est pas un langage de programmation. C’est plutôt un environnement d’exécution utilisé pour exécuter JavaScript en dehors du navigateur.
Node.js n’est pas non plus un framework (une plateforme pour développer des applications logicielles). Le runtime Node.js est construit au-dessus d’un langage de programmation – dans ce cas, JavaScript – et aide à exécuter lui-même des frameworks.
En résumé, Node.js n’est ni un langage de programmation ni un framework ; c’est un environnement pour eux.
Node.js est-il côté frontend ou côté backend ?
Une idée fausse courante parmi les développeurs est que Node.js est un framework côté backend et qu’il est utilisé uniquement pour la création de serveurs. Ce n’est pas vrai : Node.js peut être utilisé à la fois côté frontend et côté backend.
L’une des raisons pour lesquelles les frameworks Node.js sont un choix populaire pour les développeurs qui créent un backend flexible et évolutif est sa nature basée sur les événements et non bloquante. Cependant, les développeurs frontend verront également ces avantages de Node.js dans leur propre travail.
Voyons pourquoi Node.js fonctionne à la fois en backend et en frontend :
- Réutilisabilité – JavaScript est un langage courant utilisé pour écrire à la fois le backend et le frontend à l’aide de frameworks tels que Express.js et Meteor.js. Certains exemples populaires tels que MERN utilisent Express.js comme backend (un framework Node.js). Plusieurs composants peuvent également être réutilisés entre le frontend et le backend.
- Productivité et efficacité des développeurs – Grâce à une réduction de la bascule entre plusieurs langages, on peut gagner beaucoup de temps de développement. Utiliser JavaScript à la fois pour le backend et le frontend permet d’augmenter l’efficacité, car de nombreux outils sont communs aux deux.
- Grande communauté – Une communauté en ligne florissante a un impact sur la vitesse d’un cycle de développement réussi. Lorsque vous êtes coincé sur un problème, il y a de fortes chances que quelqu’un l’ait déjà résolu et ait partagé la solution sur Stack Overflow. Node.js tire parti de cette communauté, qui est active et engagée en ce qui concerne le runtime populaire et ses packages.
Premiers pas avec Node.js
Il peut être difficile de décider par où commencer avec Node.js. Heureusement, il est assez simple à installer, et ensuite vous pourrez l’essayer par vous-même.
Comment installer Node.js
Si vous avez déjà Node.js installé, n’hésitez pas à passer cette section.
Sur macOS
À l’aide de Bash sur Mac
curl "https://nodejs.org/dist/latest/node-${VERSION:-$(wget -qO- https://nodejs.org/dist/latest/ | sed -nE 's|.*>node-(.*).pkg.*|1|p')}.pkg" > "$HOME/Downloads/node-latest.pkg" && sudo installer -store -pkg "$HOME/Downloads/node-latest.pkg" -target "/"
À l’aide de Homebrew sur Mac
brew install node
Sur Windows
Téléchargez directement l’installateur Windows depuis le site web de nodejs.org.
Sur Linux
Sur Ubuntu 18.04+ vous pouvez installer Node en utilisant les commandes suivantes.
sudo apt update
sudo apt install nodejs
Vérifier la version de Node.js installée
Dans la section précédente, nous avons installé avec succès Node.js. Vérifions maintenant l’installation en vérifiant la version installée. Exécutez la commande suivante dans le terminal :
node -v
Vous pouvez également le vérifier via le drapeau plus long :
node --version
Vous devriez voir une sortie similaire à celle-ci. Le numéro de version peut varier.
v14.16.0
Qu’est-ce que NPM ?
NPM est l’écosystème de packages de Node.js. C’est le plus grand écosystème de toutes les bibliothèques open-source au monde, avec plus d’un million de packages et qui continue de croître. NPM est gratuit à utiliser et des milliers de développeurs open source y contribuent chaque jour.
NPM est livré avec une utilitaire en ligne de commande intégrée. Vous pouvez simplement vous rendre sur le site web de NPM pour rechercher le package dont vous avez besoin et l’installer en utilisant une seule commande. Vous pouvez également gérer les versions de vos packages, vérifier les dépendances et même configurer des scripts personnalisés dans vos projets grâce à cet utilitaire en ligne de commande. Sans aucun doute, NPM est la possession la plus appréciée de la communauté Node.js ; Node.js attire un grand nombre de développeurs grâce à son excellent support des packages.
Installation de paquets NPM via CLI
Lorsque vous installez Node.js, NPM est automatiquement installé avec lui. Nous avons couvert comment installer Node.js dans les sections précédentes, donc maintenant examinons la commande pour installer un package avec NPM :
npm install <nom-du-package>
Oui, c’est aussi simple que ça ! Vous pouvez même installer plusieurs packages à la fois :
npm install <pkg-1> <pkg-2> <pkg-3>
Vous pouvez également spécifier le drapeau -g
(global) si vous souhaitez installer un package dans le contexte global. Cela vous permet d’utiliser le package n’importe où sur votre machine.
Lorsque vous initialisez une nouvelle application, NPM crée automatiquement un fichier package.json
qui contient tous les packages NPM. C’est ici que vous pouvez spécifier les versions, les dépendances et les scripts personnalisés.
Il existe une longue liste de commandes fournies par l’utilitaire NPM, notamment publish
, audit
, run
, etc. Vous pouvez vérifier comment les utiliser en utilisant la commande npm help
.
Packages populaires
Voici quelques-uns des packages les plus populaires pour Node.js aujourd’hui :
- Express – Express.js, ou simplement Express, est un framework de développement web inspiré de Sinatra pour Node.js, et il est de facto le standard pour la majorité des applications Node.js actuelles.
- MongoDB – Le pilote officiel pour MongoDB. Il fournit l’API pour les bases de données d’objets MongoDB dans Node.js.
- Socket.io – Socket permet une communication bidirectionnelle en temps réel et basée sur des événements.
- Lodash – Lodash rend JavaScript plus facile en simplifiant la manipulation des tableaux, des nombres, des objets, des chaînes, etc.
- Moment – Une bibliothèque de dates JavaScript pour l’analyse, la validation, la manipulation et le formatage des dates.
- Commander.js – Tout ce dont vous avez besoin pour travailler et construire des interfaces en ligne de commande pour node.js.
- Forever – Un outil CLI simple pour garantir qu’un script donné s’exécute en continu (c’est-à-dire pour toujours). Garde votre processus Node.js en cours d’exécution en production face à tout échec inattendu.
- Async – Un module utilitaire qui fournit des fonctions simples et puissantes pour travailler avec JavaScript asynchrone.
- Redis – Une bibliothèque cliente pour la prise en charge de l’intégration de la base de données Redis.
- Mocha – Un framework de test JavaScript propre et flexible pour Node.js et le navigateur.
- Passport – Authentification simple et non intrusive pour Node.js. Le seul but de Passport est d’authentifier les demandes.
Hello World en Node.js
Comme toujours, commençons par le programme “Hello World” de base, où nous créons un serveur en Node.js qui renverra un message “Hello World” lors d’une demande au serveur. Avant de commencer, assurez-vous d’avoir un bon éditeur de texte.
Une fois que vous avez ouvert votre éditeur de texte, voici le code que vous utiliserez pour votre programme “Hello World” :
// server.js
const http = require('http');
const hostname = '127.0.0.1';
const port = 3000;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World! Welcome to Node.js');
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
Enregistrez ce fichier en tant que server.js
. Maintenant, allez dans le terminal et démarrez le serveur en utilisant la commande :
node server.js
Le serveur devrait maintenant être en cours d’exécution. Pour vérifier la sortie, ouvrez http://localhost:3000 dans votre navigateur. Vous devriez voir le message :
Hello World! Welcome to Node.js
Explication du serveur Hello World
Node.js est livré avec un module intégré appelé “HTTP” qui permet à Node.js de transférer des données via le protocole de transfert hypertexte (HTTP).
Dans le code ci-dessus, nous chargeons d’abord le module http
dans notre programme. Ensuite, nous utilisons la méthode createServer
pour accepter une demande et renvoyer une réponse avec un code de statut. Enfin, nous écoutons sur un port défini.
Félicitations, vous venez de créer votre premier serveur en Node.js ! Dans la section suivante, nous apprendrons comment utiliser le framework Express pour créer un serveur.
Création d’un serveur à l’aide d’Express
Tout d’abord, nous devons discuter de ce qu’est un serveur. Un serveur est responsable de prendre les demandes des clients via son logiciel (le plus souvent Apache ou Nginx), d’effectuer l’ensemble des tâches requises et enfin d’envoyer les réponses aux clients. Express est un framework qui nous aidera à créer un serveur en Node.
Express.js est un framework d’application web Node.js minimal et flexible qui offre un ensemble robuste de fonctionnalités pour les applications web et mobiles. Il permet d’ajouter des tables de routage et de configurer des middleware dans votre application. Vous pouvez installer Express en utilisant la commande suivante :
npm install express --save
Dans la section précédente, nous avons utilisé l’utilitaire http
intégré pour créer un serveur. Maintenant, créons un serveur “Hello World” à l’aide de Express.js.
Ouvrez votre éditeur de texte et entrez ce code :
// server-express.js
const express = require('express')
const app = express() // initialize app
const port = 3000
// GET callback function returns a response message
app.get('/', (req, res) => {
res.send('Hello World! Welcome to Node.js')
})
app.listen(port, () => {
console.log(`Server listening at http://localhost:${port}`)
})
Ensuite, nous exécuterons notre serveur avec la commande suivante :
node server-express.js
Maintenant, vérifiez http://localhost:3000
dans votre navigateur pour voir la sortie “Hello World”.
Résumé
En résumé, Node.js est un environnement de programmation populaire qui peut être utilisé pour créer des applications à grande échelle qui doivent prendre en charge plusieurs demandes simultanées. Grâce à son E/S non bloquante et à son architecture monofilaire, il est un excellent choix pour les applications en temps réel et de diffusion de données.
Node.js dispose d’une communauté massive de développeurs actifs et se targue d’avoir le plus grand référentiel de packages open source au monde, NPM, qui contient actuellement plus d’un million de packages.
Il est facile de commencer avec Node.js. Nous avons couvert comment l’installer et créer un serveur en Node.js, il ne vous reste plus qu’à réfléchir à la façon dont vous allez utiliser et implémenter Node.js dans votre propre pile. Vous pouvez également approfondir vos connaissances en visitant la documentation officielle de Node.js à l’adresse nodejs.dev.
Passez toutes vos applications, bases de données et sites WordPress en ligne et sous un même toit. Notre plateforme cloud performante et riche en fonctionnalités comprend :
- Une configuration et une gestion faciles dans le tableau de bord MyKinsta
- Une assistance experte 24/7
- Le meilleur matériel et réseau Google Cloud Platform, alimenté par Kubernetes pour une évolutivité maximale
- Une intégration Cloudflare de niveau entreprise pour la rapidité et la sécurité
- Une portée mondiale auprès de 35 centres de données et de 260 PoP dans le monde entier
Commencez avec un essai gratuit de notre hébergement d’applications ou de notre hébergement de base de données. Explorez nos plans ou parlez à notre équipe commerciale pour trouver la meilleure solution pour vous.