Maison > Article > interface Web > Qu'est-ce que Node.js ? Quels sont les avantages ?
Recommandations associées : "Tutoriel nodejs"
En tant que fan fidèle de JS, bien que JS n'ait pas un écosystème aussi grand que JAVA, mais JavaScript est passé des scripts côté client au côté serveur, ce qui nous fait y prêter attention. JavaScript se développe lentement et nous devons l'apprendre sous un angle différent.
Qu'est-ce que Node.js ?
Nodejs est essentiellement un environnement d'exécution JavaScript.
Le moteur V8 basé sur Google est en fait un environnement d'exécution découpé dans le moteur V8 de Chrome et encapsulé.
Allons sur le site officiel pour télécharger le package et l'installer de manière infaillible.
Site officiel de téléchargement de nœud : https://nodejs.org/en/download/
Entrez le nœud sur la ligne de commande pour exécuter le script javaScript.
Avantages de Node.js ? Pourquoi le langage de script JavaScript peut-il être utilisé comme langage serveur ?
Avantage 1 Node.js a des capacités de concurrence très élevées
Le premier objectif de Node.js est de fournir un outil de développement simple pour créer des serveurs hautes performances et exécuter diverses applications sur les serveurs.
Comparé aux langages classiques côté serveurtels que Java, PHP ou .net, Node.js est comme un gars jeune et énergique. Le langage Java créera un nouveau fil de discussion pour chaque client, et. chaque connexion client crée un thread qui consomme 2 Mo de mémoire. C'est à dire. Théoriquement, un serveur de 8 Go peut avoir environ 4 000 utilisateurs connectés simultanément. Pour prendre en charge davantage d'utilisateurs avec une simultanéité élevée, des serveurs supplémentaires doivent être ajoutés.
Node.js ne crée pas de nouveau fil de discussion pour chaque client, mais n'utilise qu'un seul fil de discussion.
C'est parce que Node est basé sur un seul thread (il n'y a qu'un seul thread principal pour recevoir les demandes et y répondre) N'est-ce pas plus lent ? En fait, ce n’est pas le cas. Lorsque Node.js reçoit une connexion utilisateur, il déclenche un événement interne. Répondez au comportement des utilisateurs grâce à des fonctions prédéfinies. Le thread principal de Node.js ne se soucie pas du processus du programme. En fait, il existe un autre thread de travail pour aider le thread principal de Node à accéder aux fichiers et à lire la base de données lorsque le thread de travail lit les données du fichier ou les fichiers. données dans la base de données, la fonction de rappel sera renvoyée au thread principal du nœud pour exécution, par exemple en transmettant les données trouvées au client et en fermant la connexion pour certaines opérations. (Il s'agit d'E/S non bloquantes de nœud, pilotées par les événements).Une image que je dessine ci-dessous (s'il y a une chose inappropriée, pardonnez-moi s'il vous plaît)
En ce moment, nous y devrait être un prototype dans votre tête, c'est-à-dire que le thread principal de Node.js a été occupé à recevoir des demandes et à y répondre, afin qu'il puisse recevoir en continu des demandes de plusieurs clients, et qu'il n'ait pas à attendre bêtement dans IO. opérations, lorsque le thread de travail IO trouve les données, il déclenchera la fonction de rappel d'événement pour indiquer au thread principal que les données ont été obtenues. À ce moment, le thread principal exécutera la fonction de rappel et renverra les données au client.
Théoriquement, un serveur doté de 8G de mémoire peut accueillir les connexions de 30 000 à 40 000 utilisateurs en même temps.
C'est là que Node brille (E/S monothread, non bloquantes, pilotées par les événements)
Avantages 2 Node utilise la syntaxe JavaScript
Node.JSMoteur V8 basé sur javaScript, ce qui signifie que tant que vous connaissez la syntaxe de JS, vous pouvez l'utiliser pour le développement back-end, mais Node recommande officiellement ECMA Script6 ( ES6) syntaxe . Node brise la situation passée où JavaScript ne peut s'exécuter que dans le navigateur et unifie les environnements de programmation front-end et back-end, ce qui réduit considérablement les coûts de développement. (C'est très convivial pour les développeurs front-end. Plus JS peut faire de choses, plus le développement front-end sera rapide)
Avantages 3 L'émergence de Node.JS favorise le front-end Réflexions sur l'ingénierie -end Le front-end s'est développé rapidement ces dernières années et Node.js joue un rôle irremplaçable.
Node.js n'est pas seulement un environnement d'exécution, mais aussi un tout nouveau langage JavaScript. Il s'adapte aux bases de la syntaxe JS et ajoute également quelques modules internes
Tels que :
http. est utilisé Module pour traiter la réponse à la demande
using using using ' using using ' s ' using using using ' s ' en utilisant ‐ ‐ ‐‐ ‐‐ ‐ à, , afin que nous puissions facilement télécharger le packages dont dépend notre projet via la commande ligne
Par exemple :
npm install jquery
npm install -g webpack
npm install -g create-react-app Attendez
De même, vous pouvez l'utiliser à condition de l'introduire dans le projet
const http = require('http')
Node prend également en charge la syntaxe du module auto-défini ↓↓
const Jquery = require('jquery');
rrree . Rendre l'ingénierie frontale modulaire, développer rapidement, réduire le couplage de code et améliorer considérablement la maintenabilité.
À quoi convient Node.js ? La liste suivante des scénarios d'application node.js
Parlons des scénarios où Node.js ne convient pas (ajoutez un gros titre↓↓↓)
Node est Scénarios non adaptés
①Programmes gourmands en calcul CPU
Avant la version 0.8 de Node.js, Node.js ne prenait pas en charge le multi-threading. Bien sûr, c'est une question de philosophie de conception, car les développeurs et les partisans de Node.js croient fermement que la programmation asynchrone monothread et pilotée par événements fonctionne plus efficacement que la programmation multithread traditionnelle. Mais en fait, le multithreading peut atteindre le même débit, même si cela peut être coûteux, mais il n'est pas nécessaire de réaliser des configurations spéciales pour les environnements multicœurs. En revanche, en raison de sa nature monothread, Node.js doit utiliser une approche multi-processus pour utiliser pleinement les ressources multicœurs.Idéalement, le monothread Node.js occupera complètement un cœur de processeur pendant l'exécution, et toutes les requêtes doivent attendre que la requête en cours soit traitée et entrer dans la boucle d'événements avant de répondre. Si une application nécessite beaucoup de calcul, à moins que vous ne la divisiez manuellement, la latence de réponse aux requêtes sera considérable. Par exemple, si un calcul complexe est effectué dans la fonction de rappel d'un événement et prend 200 millisecondes de CPU, alors toutes les requêtes dans la boucle d'événement devront attendre 200 millisecondes. Afin d'améliorer la vitesse de réponse, votre seul moyen est de diviser cette partie gourmande en calculs en plusieurs logiques, ce qui apporte une complexité supplémentaire à la programmation. Même ainsi, le débit total et la latence totale de réponse du système ne seront pas réduits, mais la planification sera légèrement plus équitable. Heureusement, dans un serveur Web réel, il y a rarement une partie gourmande en calcul, et si c'est le cas, elle ne doit pas être implémentée pour une réponse immédiate. La bonne méthode consiste à indiquer à l'utilisateur que le serveur est en train de traiter, à l'avertir lorsque le traitement est terminé, puis à laisser à d'autres processus du serveur ou même à d'autres serveurs dédiés le soin de faire le travail. ②Application multitâche mono-utilisateur
Ce dont nous avons discuté plus tôt est généralement une programmation côté serveur, et l'une des hypothèses est qu'il y a beaucoup d'utilisateurs. Mais si vous faites face à un seul utilisateur, comme un outil de ligne de commande local ou une interface graphique, alors le grand nombre de requêtes simultanées n'existe pas. Un autre problème terrible se pose donc. Même s’il s’agit d’un seul utilisateur, il ne s’agit pas nécessairement d’une seule tâche. Par exemple, tout en fournissant une interface à l'utilisateur, un certain calcul est effectué en arrière-plan. Afin d'éviter que l'interface utilisateur ne soit bloquée, vous devez activer le multi-thread ou le multi-processus. La communication entre les threads ou les processus Node.js est jusqu'à présent gênante car elle n'a aucun verrou, on dit donc qu'elle n'est pas dans une impasse. Les multiples processus de Node.js effectuent souvent la même tâche et utilisent les ressources de plusieurs processeurs via plusieurs processus. Cependant, lorsque plusieurs processus coopèrent les uns avec les autres, cela devient tendu.Le flux de contrôle de Node.js n'est pas linéaire. Il est divisé en événements un par un, mais la pensée humaine est linéaire lorsque vous essayez de convertir votre pensée pour répondre. pour le langage ou le compilateur, des sacrifices doivent être faits. Par exemple, vous devez mettre en œuvre une logique comme celle-ci : retirer de l'argent de la banque, utiliser l'argent pour acheter un certain produit virtuel et l'ajouter à la base de données d'inventaire après l'achat. Toute étape intermédiaire peut impliquer des dizaines d'opérations d'E/S. , et une opération de restauration doit être effectuée après l'échec d'une opération. Ce processus est linéaire et déjà très complexe. S’il devait être découpé en logique non linéaire, la complexité serait probablement intenable. Node.js est meilleur pour gérer les tâches avec une logique simple mais un accès fréquent, mais n'est pas adapté pour effectuer des tâches avec une logique très complexe.
"D'accord, c'est mon résumé de Node.js, je n'en dirai pas plus, je l'écris depuis longtemps, donc je vais le coder." >
Pour plus de connaissances liées à la programmation, veuillez visiter :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!