
Node.js est un runtime JavaScript. Qu'est-ce que cela signifie et comment cela fonctionne-t-il?
L'environnement Node.js comprend tout ce dont vous avez besoin pour exécuter un programme écrit en JavaScript.

Auparavant, vous ne pouviez exécuter JavaScript que dans un navigateur, mais une fois que les développeurs l'ont développé, vous pouvez désormais exécuter JS sur votre ordinateur en tant qu'application autonome. Il y avait donc Node.js.
Vous pouvez désormais faire bien plus avec JavaScript que de simples sites Web interactifs.
JavaScript a désormais la capacité de faire ce que d'autres langages de programmation de script, tels que Python, peuvent faire.
JavaScript et Node.js basés sur un navigateur s'exécutent tous deux dans le runtime V8. Ce moteur utilise votre code JS et le convertit en code machine plus rapide. Le code machine est un code de bas niveau qu'un ordinateur peut exécuter sans avoir à l'interpréter au préalable.
Pourquoi Node.js?
Voici la définition officielle donnée sur le site officiel de Node.js:
- Node.js - Runtime JavaScript basé sur le moteur JavaScript V8 de Chrome.
- Node.js utilise un modèle d'E / S non bloquant piloté par les événements qui le rend facile et efficace.
- L'écosystème de packages Node.js, npm, est le plus grand écosystème de bibliothèques open source au monde.
Nous avons déjà discuté de la première ligne de cette définition: "Node.js est un runtime JavaScript basé sur le moteur JavaScript V8 de Chrome." Voyons maintenant les deux autres lignes, afin de comprendre pourquoi Node.js est si populaire.
I / O signifie entrée / sortie. Cela peut être n'importe quoi: de la lecture / écriture de fichiers locaux à une requête HTTP dans l'API. Les E / S prennent du temps et bloquent donc d'autres fonctions.
Considérons un scénario dans lequel nous demandons user1 et user2 au backend, puis les imprimons sur l'écran / dans la console. La réponse à cette demande prend du temps, mais les deux demandes de données utilisateur peuvent être exécutées indépendamment et en même temps.

Blocage entrée-sortie
Dans la méthode de verrouillage, la demande de données utilisateur2 n'est déclenchée que lorsque les données utilisateur1 sont imprimées à l'écran.
S'il s'agissait d'un serveur Web, nous aurions besoin de démarrer un nouveau thread pour chaque nouvel utilisateur. Mais JavaScript est monothread (mais il a une boucle d'événement monothread, dont nous parlerons un peu plus tard). Ainsi, cela rendra JavaScript peu adapté aux tâches multithread.
E / S non bloquantes
D'autre part, à l'aide d'une demande non bloquante, vous pouvez lancer une demande de données pour l'utilisateur2 sans attendre de réponse à la demande de l'utilisateur1. Vous pouvez lancer les deux demandes en parallèle.
Les E / S non bloquantes éliminent le besoin de multithreading car le serveur peut gérer plusieurs demandes à la fois.
Boucle d'événement JavaScript
Si vous disposez de 26 minutes, consultez l'excellente explication vidéo de la boucle d'événement de nœud:
Sinon, voici une explication étape par étape du fonctionnement de la boucle d'événements en JavaScript:

1. Envoyez main () à la pile d'appels.
2. Envoyez console.log () à la pile d'appels. Il démarre immédiatement et apparaît.
3. Envoyez setTimeout (2000) à la pile. setTimeout (2000) est l'API Node. Lorsque nous l'appelons, nous enregistrons une paire d'événements de rappel. L'événement attendra 2 000 millisecondes, puis appellera un rappel.
4. Après l'enregistrement, setTimeout (2000) apparaît dans la pile d'appels.
5. Le deuxième setTimeout (0) est maintenant enregistré de la même manière. Nous avons maintenant deux API Node en attente d'exécution.
6. Après avoir attendu 0 seconde, setTimeout (0) se déplace vers la file d'attente de rappel et la même chose se produit avec setTimeout (2000).
7. Dans la file d'attente d'exécution de rappel, les fonctions attendent que la pile d'appels soit vide, car une seule fonction peut être exécutée à la fois. Cela fournit une boucle d'événements.
8. Le dernier console.log () est appelé et main () est appelé à partir de la pile d'appels.
9. La boucle d'événements voit que la pile d'appels est vide, mais la file d'attente de rappel ne l'est pas. Ainsi, il déplace les rappels (dans l'ordre) vers la pile d'appels à exécuter.
Npm

Ce sont des bibliothèques construites par la communauté. Ils résoudront les problèmes les plus courants. npm (Node Package Manager) contient des packages que vous pouvez utiliser dans vos applications pour rendre votre développement plus rapide et plus efficace.
Exiger
Exiger a trois fonctions:
Charge les modules fournis avec Node.js, par exemple, depuis le système de fichiers ou HTTP, depuis l'API Node.js.
Charge des bibliothèques tierces telles qu'Express et Mongoose que vous installez à partir de npm.
Vous permet de créer vos propres fichiers et de diviser le projet en modules.
Require est une fonction qui prend un paramètre de chemin et renvoie module.exports.
Modules de nœuds
Les modules de nœuds sont des blocs de code réutilisables dont l'existence n'affecte pas accidentellement d'autres codes.
Vous pouvez écrire vos propres modules et les utiliser dans diverses applications. Node.js possède un ensemble de modules intégrés que vous pouvez utiliser sans installation spéciale.
V8 accélère JavaScript en utilisant C ++
V8 est un moteur open source écrit en C ++.
JavaScript -> V8 (C ++) -> code machine
V8 implémente ECMAScript comme spécifié dans ECMA-262. ECMAScript a été créé par Ecma International pour standardiser JavaScript.
V8 peut fonctionner de manière autonome ou peut être intégré dans n'importe quelle application C ++. Grâce à cela, vous pouvez écrire votre propre code C ++ et le rendre disponible pour JavaScript.
Les événements
Les événements sont tout ce qui s'est passé dans notre application et ce à quoi nous pouvons répondre.
Le nœud a deux types d'événements:
- Événements système: noyau C ++ de la bibliothèque libuv. (Par exemple, terminer la lecture d'un fichier).
- Événements personnalisés: noyau JavaScript.
Écrire Hello World dans Node.js
Pourquoi pas?
Créez le fichier app.js et ajoutez-y ce qui suit.
console.log ("Hello World!");
Ouvrez un terminal Node, remplacez le répertoire par le dossier dans lequel le fichier est enregistré et exécutez le nœud app.js.
Voila - vous venez d'écrire «Hello World» dans Node.js.
Il existe des tonnes de ressources que vous pouvez utiliser pour en savoir plus sur Node.js, y compris
freeCodeCamp.org.