Node.js est une plate-forme construite sur le runtime JavaScript Chrome. Ensuite, je partagerai avec vous la préquelle pour démarrer avec node.js à travers cet article. Les amis intéressés devraient jeter un œil ensemble
1 Qu'est-ce que NodeJS<.>
En termes simples, Node.js est du JavaScript exécuté côté serveur. Node.js est une plate-forme construite sur le runtime JavaScript Chrome. Node.js est un environnement JavaScript côté serveur d'E/S piloté par événements, basé sur le moteur V8 de Google (l'environnement d'exécution JavaScript utilisé par le navigateur Chrome de Google), Le moteur V8 exécute Javascript Très rapide et très bonnes performances.2. Pourquoi choisir NodeJS
Si vous êtes un programmeur front-end, vous ne connaissez pas les langages de programmation dynamiques comme PHP , Python ou Ruby , et que vous souhaitez ensuite créer votre propre service, alors Node.js est un très bon choix. Node.js est JavaScript exécuté côté serveur. Si vous êtes familier avec Javascript, vous apprendrez facilement Node.js. Bien sûr, si vous êtes un programmeur back-end et que vous souhaitez déployer des services hautes performances, alors apprendre Node.js est également un très bon choix.3. Caractéristiques de NodeJS
Jetons d'abord un coup d'œil à l'introduction sur le site officiel de NodeJS : Node .js est une plate-forme construite sur le moteur d'exécution JavaScript de Chrome pour créer facilement des applications réseau rapides et évolutives. Node.js utilise un modèle d'E/S non bloquant et piloté par les événements qui le rend léger et efficace, parfait pour les données en temps réel gourmandes. applications qui s'exécutent sur des appareils distribués.Ses caractéristiques sont :
1. Il s'agit d'un environnement d'exécution Javascript 2 . Dépend du moteur Chrome V8 pour l'interprétation du code 3. Piloté par les événements 4. E/S non bloquantes 5. Léger, évolutif, adapté à un usage réel. applications d'interaction de données temporelles 6. Processus unique, thread uniqueModèle asynchrone piloté par les événements
Nous devons également lancer une demande et attendre la réponse côté serveur mais ce qui est différent de l'exemple bancaire, c'est que cette fois nous avons obtenu un numéro après avoir commandé le repas <.>
Après avoir obtenu le numéro, nous attendrons souvent chez nous, et les demandes derrière nous continueront à être traitées. Nous prenons également un numéro et attendons de côté, et la réceptionniste peut continuer à le traiter.
Lorsque le repas est commandé, le numéro sera appelé. Nous obtiendrons notre propre repas et effectuerons le traitement ultérieur (manger)
Cette action d'appel du numéro est appelée rappel dans NodeJS Can. continuer à exécuter la logique suivante (manger) une fois l'événement (cuisson, E/S) terminé,
Cela reflète les fonctionnalités remarquables de NodeJS, mécanisme asynchrone, piloté par les événements
L'ensemble processus Il n'est pas nécessaire de bloquer la connexion des nouveaux utilisateurs (commande de nourriture), et il n'est pas nécessaire de maintenir la connexion entre les utilisateurs qui ont déjà commandé de la nourriture et le chef
Node.Js utilise un processus événementiel modèle Lorsque le serveur Web reçoit une requête, il la ferme, puis la traite, puis répond à la requête Web suivante. Lorsque la requête est terminée, elle est remise dans la file d'attente de traitement, et lorsque la tête de file d'attente est atteinte, le résultat est renvoyé à l'utilisateur. Ce modèle est très efficace et évolutif car le serveur Web accepte toujours les requêtes sans attendre aucune opération de lecture ou d'écriture. (Cela est également appelé IO non bloquant ou IO piloté par événement)
Sur la base de ce mécanisme, en théorie, NodeJS peut répondre aux utilisateurs qui demandent des connexions les uns après les autres, donc NodeJS peut prendre en charge plus que Java et PHP programmes. Concurrence plus élevée
Bien que le maintien de la file d'attente des événements nécessite également des coûts, et comme NodeJS est monothread, plus la file d'attente des événements est longue, plus il faut de temps pour obtenir une réponse, et le degré de concurrence sera toujours le même. insuffisant
Pour résumer comment NodeJS résout le problème des connexions concurrentes : Changer la façon de se connecter au serveur Chaque connexion émet un processus. dans le moteur NodeJS. Les événements (événements) exécutés dans la file d'attente des événements sont placés dans la file d'attente des événements,
Au lieu de générer un nouveau thread de système d'exploitation pour chaque connexion (et de lui allouer de la mémoire de support)
Blocage des E/SUn autre problème que NodeJS résout est le blocage des E/S. Regardez ce scénario commercial : vous devez extraire des données de plusieurs sources de données. puis effectuez le traitement
(1) Acquisition en série de données, c'est notre solution générale, prenez PHP comme exemple
Si vous obtenez des opérations de profil et de chronologie nécessitent des opérations séparées 1S, puis l'acquisition en série nécessite 2S
(2) E/S non bloquantes NodeJS, émettant/écoutant des événements pour contrôler le processus d'exécution
Lorsque NodeJS rencontre un événement d'E/S, il créera un thread à exécuter, puis le thread principal continuera à s'exécuter
Par conséquent, l'action de. la prise de profil déclenche un Pour les événements d'E/S, l'action d'obtention de la chronologie sera exécutée immédiatement
Les deux actions sont exécutées en parallèle si chacune prend 1S, alors le temps total est de 1S
<.> Leurs opérations d'E/S Une fois l'exécution terminée, un événement, un profil et une chronologie sont émis, Une fois que l'agent d'événement l'a reçu, il continue d'exécuter la logique suivante. C'est la fonctionnalité de NodeJS non. -blocage des E/S Pour résumer : Java et PHP ont également des moyens d'implémenter des requêtes parallèles (sous-threads), mais NodeJS peut le faire très naturellement grâce à des fonctions de rappel (Callback) et mécanismes asynchrones4. Avantages et inconvénients de NodeJS
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!