portaldacalheta.pt
  • Principal
  • La Technologie
  • Personnes Et Équipes
  • Gestion De Projet
  • Équipes Distribuées
Interface Web

Pourquoi diable utiliserais-je Node.js? Un didacticiel au cas par cas



introduction

La popularité croissante de JavaScript a entraîné de nombreux changements, et le visage du développement Web est aujourd'hui radicalement différent. Les choses que nous pouvons faire sur le Web de nos jours avec JavaScript s'exécutant sur le serveur, ainsi que dans le navigateur, étaient difficiles à imaginer il y a quelques années à peine, ou étaient encapsulées dans des environnements sandbox comme Flash ou Java Applets.

Avant de creuser Solutions Node.js , vous voudrez peut-être en savoir plus sur les avantages de l'utilisation JavaScript à travers la pile qui unifie le langage et le format de données (JSON), vous permettant de réutiliser de manière optimale les ressources du développeur. Comme il s'agit plus d'un avantage de JavaScript que de Node.js en particulier, nous n'en discuterons pas beaucoup ici. Mais c'est un avantage majeur à intégrer Node dans votre pile.



Comme l'indique Wikipedia: 'Node.js est une compilation packagée du moteur JavaScript V8 de Google, de la couche d'abstraction de la plateforme libuv et d'une bibliothèque principale, elle-même principalement écrite en JavaScript.' Au-delà de cela, il convient de noter que Ryan Dahl, le créateur de Node.js, visait à créer sites Web en temps réel avec capacité push , 'Inspiré par des applications comme Gmail'. Dans Node.js, il a donné aux développeurs un outil pour travailler dans le paradigme d'E / S non bloquantes et pilotées par les événements.



Après plus de 20 ans de Web sans état basé sur le paradigme de demande-réponse sans état, nous avons enfin des applications Web avec des connexions bidirectionnelles en temps réel.

En une phrase: Node.js brille dans les applications Web en temps réel utilisant la technologie push sur les Websockets. Qu'y a-t-il de si révolutionnaire à ce sujet? Eh bien, après plus de 20 ans de Web sans état basé sur le paradigme demande-réponse sans état, nous avons enfin des applications Web avec des connexions bidirectionnelles en temps réel, où le client et le serveur peuvent initier la communication, leur permettant d'échanger des données librement . Ceci est en contraste frappant avec le paradigme typique de réponse Web, où le client initie toujours la communication. De plus, tout est basé sur la pile Web ouverte (HTML, CSS et JS) fonctionnant sur le port standard 80.



On pourrait dire que nous avons cela depuis des années sous la forme d'applets Flash et Java - mais en réalité, il ne s'agissait que d'environnements sandbox utilisant le Web comme protocole de transport à livrer au client. De plus, ils étaient exécutés de manière isolée et souvent exploités sur des ports non standard, qui peuvent nécessiter des autorisations supplémentaires, etc.

Avec tous ses avantages, Node.js joue désormais un rôle essentiel dans la pile technologique de nombreuses entreprises de premier plan qui dépendent de ses avantages uniques. La Fondation Node.js a consolidé toutes les meilleures réflexions sur les raisons pour lesquelles les entreprises devraient envisager Node.js dans une courte présentation qui peut être trouvée sur le Page des études de cas de la Fondation Node.js .



Dans ce guide Node.js, je vais expliquer non seulement comment ces avantages sont obtenus, mais aussi pourquoi vous pourriez vouloir utiliser Node.js - et pourquoi pas —En utilisant certains des modèles d'application Web classiques comme exemples.

Comment ça marche?

L'idée principale de Node.js: utiliser des E / S non bloquantes et pilotées par les événements pour rester léger et efficace face aux applications en temps réel gourmandes en données qui s'exécutent sur des appareils distribués.



C’est une bouchée.

Ce que cela signifie vraiment, c'est que Node.js est ne pas une nouvelle plate-forme miracle qui dominera le monde du développement Web. C’est plutôt une plate-forme qui répond à un besoin particulier. Tweet

Qu'est-ce que c'est vraiment signifie que Node.js est ne pas une nouvelle plate-forme miracle qui dominera le monde du développement Web. C'est plutôt une plate-forme qui répond à un besoin particulier . Et comprendre cela est absolument essentiel. Vous ne voulez certainement pas utiliser Node.js pour des opérations gourmandes en ressources processeur; en fait, son utilisation pour des calculs lourds annulera presque tous ses avantages. Là où Node brille vraiment, c'est dans la création d'applications réseau rapides et évolutives, car il est capable de gérer un grand nombre de connexions simultanées avec un débit élevé, ce qui équivaut à une évolutivité élevée.



Comment cela fonctionne sous le capot est assez intéressant. Par rapport aux techniques de service Web traditionnelles où chaque connexion (demande) génère un nouveau thread, occupant la RAM système et finissant par maximiser la quantité de RAM disponible, Node.js fonctionne sur un seul thread, en utilisant I / non bloquant O, ce qui lui permet de prendre en charge des dizaines de milliers de connexions simultanées détenues dans la boucle d'événements.

Schéma du thread de serveur traditionnel vs Node.js



Un calcul rapide: en supposant que chaque thread dispose potentiellement de 2 Mo de mémoire d'accompagnement, s'exécuter sur un système avec 8 Go de RAM nous met à un maximum théorique de 4000 connexions simultanées (calculs tirés de l'article de Michael Abernethy 'Just what is Node.js?', publié sur IBM developerWorks en 2011; malheureusement, l'article n'est plus disponible) , plus le coût de changement de contexte entre les threads . C’est le scénario auquel vous faites généralement face dans les techniques de diffusion Web traditionnelles. En évitant tout cela, Node.js atteint des niveaux d'évolutivité de plus 1M de connexions simultanées , et plus 600k connexions Websockets simultanées .

Il y a, bien sûr, la question du partage d'un seul thread entre toutes les demandes des clients, et c'est un écueil potentiel de l'écriture d'applications Node.js. Premièrement, des calculs lourds pourraient étouffer le thread unique de Node et causer des problèmes à tous les clients (plus à ce sujet plus tard) car les demandes entrantes seraient bloquées jusqu'à ce que ledit calcul soit terminé. Deuxièmement, les développeurs doivent faire très attention à ne pas permettre à une exception de remonter jusqu'à la boucle d'événements principale (la plus haute) Node.js, ce qui entraînera la fin de l'instance Node.js (ce qui plantera effectivement le programme).



La technique utilisée pour éviter que les exceptions ne remontent à la surface consiste à renvoyer les erreurs à l'appelant en tant que paramètres de rappel (au lieu de les lancer, comme dans d'autres environnements). Même si une exception non gérée parvient à bouillonner, des outils ont été développés pour surveiller le processus Node.js et effectuer les récupération d'une instance plantée (bien que vous ne puissiez probablement pas récupérer l'état actuel de la session utilisateur), le plus courant étant le Module Forever , ou en utilisant une approche différente avec des outils système externes parvenu et rapide , ou même juste parvenu .

NPM: le gestionnaire de packages de nœuds

Lorsque vous discutez de Node.js, une chose à ne pas omettre est la prise en charge intégrée de gestion des packages à l'aide de NPM , un outil fourni par défaut avec chaque installation de Node.js. L'idée des modules NPM est assez similaire à celle de Gemmes rubis : un ensemble de composants réutilisables accessibles au public, disponibles via une installation facile via un référentiel en ligne, avec gestion des versions et des dépendances.

Une liste complète des modules packagés se trouve sur le site Web npm , ou accessible à l'aide de l'outil CLI npm qui est automatiquement installé avec Node.js. L'écosystème de modules est ouvert à tous et chacun peut publier son propre module qui sera répertorié dans le référentiel npm.

Certains des modules npm les plus utiles aujourd'hui sont:

  • Express - Express.js - ou simplement Express - un cadre de développement Web inspiré de Sinatra pour Node.js, et le standard de facto pour la majorité des applications Node.js disponibles aujourd'hui.
  • ouvert - un framework centré sur la configuration très modulaire et simple à utiliser pour la création d'applications Web et de services
  • relier - Connect est un framework de serveur HTTP extensible pour Node.js, fournissant une collection de «plugins» haute performance appelés middleware; sert de base à Express.
  • socket.io et sockjs - Composant côté serveur des deux composants Websockets les plus courants aujourd'hui.
  • carlin (Auparavant Jade ) - L'un des moteurs de modèles populaires, inspiré de HAML, une valeur par défaut dans Express.js.
  • mongodb et mongojs - Les wrappers MongoDB pour fournir l'API pour les bases de données d'objets MongoDB dans Node.js.
  • redis - Redis client library.
  • lodash (trait de soulignement, lazy.js) - La ceinture utilitaire JavaScript. Underscore a lancé le jeu, mais a été renversé par l'un de ses deux homologues, principalement en raison de meilleure performance et mise en œuvre modulaire.
  • pour toujours - Probablement l'utilitaire le plus courant pour s'assurer qu'un script de nœud donné s'exécute en continu. Maintient votre processus Node.js en production face à des pannes inattendues.
  • oiseau bleu - Une implémentation complète de Promises / A + avec des performances exceptionnellement bonnes
  • moment - Une bibliothèque de dates JavaScript pour analyser, valider, manipuler et formater les dates.

La liste continue. Il existe des tonnes de packages vraiment utiles, disponibles à tous (sans offenser ceux que j’ai omis ici).

Exemples d'utilisation de Node.js

BAVARDER

Le chat est l'application multi-utilisateurs en temps réel la plus courante. De l'IRC (à l'époque), en passant par de nombreux protocoles propriétaires et ouverts fonctionnant sur des ports non standard, à la possibilité de tout mettre en œuvre aujourd'hui dans Node.js avec des websockets fonctionnant sur le port standard 80.

L'application de chat est vraiment l'exemple idéal pour Node.js: il s'agit d'une application légère, à fort trafic, gourmande en données (mais à faible traitement / calcul) qui s'exécute sur des appareils distribués. C'est également un excellent cas d'utilisation pour l'apprentissage, car il est simple, mais il couvre la plupart des paradigmes que vous utiliserez jamais dans une application Node.js typique.

Essayons de décrire comment cela fonctionne.

Dans l'exemple le plus simple, nous avons un seul salon de discussion sur notre site Web où les gens viennent et peuvent échanger des messages de manière un-à-plusieurs (en fait tous). Par exemple, disons que nous avons trois personnes sur le site Web toutes connectées à notre babillard électronique.

Côté serveur, nous avons une simple application Express.js qui implémente deux choses:

  1. A GET / le gestionnaire de requêtes qui sert la page Web contenant à la fois un babillard électronique et un bouton «Envoyer» pour initialiser la nouvelle entrée de message, et
  2. Un serveur websockets qui écoute les nouveaux messages émis par les clients websocket.

Du côté client, nous avons une page HTML avec quelques gestionnaires configurés, un pour l'événement de clic sur le bouton `` Envoyer '', qui récupère le message d'entrée et l'envoie dans le websocket, et un autre qui écoute les nouveaux messages entrants sur le client websockets (c'est-à-dire les messages envoyés par d'autres utilisateurs, que le serveur veut maintenant que le client affiche).

Lorsque l'un des clients publie un message, voici ce qui se passe:

  1. Le navigateur intercepte le clic du bouton 'Envoyer' via un gestionnaire JavaScript, récupère la valeur du champ de saisie (c'est-à-dire le texte du message) et émet un message Websocket à l'aide du client websocket connecté à notre serveur (initialisé lors de l'initialisation de la page Web).
  2. Le composant côté serveur de la connexion websocket reçoit le message et le transmet à tous les autres clients connectés à l'aide de la méthode de diffusion.
  3. Tous les clients reçoivent le nouveau message sous forme de message push via un composant côté client Websockets exécuté dans la page Web. Ils récupèrent ensuite le contenu du message et mettent à jour la page Web sur place en ajoutant le nouveau message au tableau.

Schéma des websockets client et serveur dans une application Node.js

C'est le exemple le plus simple . Pour plus solution robuste , vous pouvez utiliser un cache simple basé sur le magasin Redis. Ou dans une solution encore plus avancée, une file d'attente de messages pour gérer le routage des messages vers les clients et un mécanisme de livraison plus robuste qui peut couvrir les pertes de connexion temporaires ou le stockage des messages pour les clients enregistrés lorsqu'ils sont hors ligne. Mais quelles que soient les améliorations que vous apportez, Node.js fonctionnera toujours selon les mêmes principes de base: réagir aux événements, gérer de nombreuses connexions simultanées et maintenir la fluidité de l'expérience utilisateur.

API AU-DESSUS D'UNE DB D'OBJETS

Bien que Node.js brille vraiment avec les applications en temps réel, il est tout à fait naturel d'exposer les données des bases de données d'objets (par exemple MongoDB). Les données stockées JSON permettent à Node.js de fonctionner sans la discordance d'impédance et la conversion des données.

Par exemple, si vous utilisez Rails, vous convertirez de JSON en modèles binaires, puis les exposez en JSON sur HTTP lorsque les données sont consommées par Backbone.js, Angular.js, etc., ou même jQuery AJAX. appels. Avec Node.js, vous pouvez simplement exposer vos objets JSON avec une API REST pour que le client les consomme. De plus, vous n'avez pas à vous soucier de la conversion entre JSON et quoi que ce soit d'autre lorsque vous lisez ou écrivez à partir de votre base de données (si vous utilisez MongoDB). En résumé, vous pouvez éviter d'avoir à effectuer plusieurs conversions en utilisant un format de sérialisation de données uniforme sur le client, le serveur et la base de données.

ENTRÉES EN ATTENTE

Si vous recevez une grande quantité de données simultanées, votre base de données peut devenir un goulot d'étranglement. Comme illustré ci-dessus, Node.js peut facilement gérer eux-mêmes les connexions simultanées. Mais comme l'accès à la base de données est une opération bloquante (dans ce cas), nous rencontrons des problèmes. La solution consiste à reconnaître le comportement du client avant que les données ne soient réellement écrites dans la base de données.

Avec cette approche, le système maintient sa réactivité sous une charge lourde, ce qui est particulièrement utile lorsque le client n’a pas besoin d’une confirmation ferme de l’écriture réussie des données. Les exemples typiques incluent: la journalisation ou l'écriture de données de suivi des utilisateurs, traitées par lots et non utilisées jusqu'à une date ultérieure; ainsi que les opérations qui n'ont pas besoin d'être reflétées instantanément (comme la mise à jour d'un compte 'J'aime' sur Facebook) où cohérence éventuelle (si souvent utilisé dans le monde NoSQL) est acceptable.

Les données sont mises en file d'attente via une sorte d'infrastructure de mise en cache ou de mise en file d'attente de messages, comme RabbitMQ ou ZeroMQ, et digérées par un processus d'écriture par lots de base de données distinct, ou des services de traitement de traitement intensif en calcul, écrits dans une plate-forme plus performante pour de telles tâches. Un comportement similaire peut être implémenté avec d'autres langages / frameworks, mais pas sur le même matériel, avec le même débit élevé et maintenu.

Schéma d

En bref: avec Node, vous pouvez pousser les écritures de la base de données sur le côté et les traiter plus tard, en procédant comme si elles avaient réussi.

STREAMING DE DONNÉES

Dans les plates-formes Web plus traditionnelles, les requêtes et réponses HTTP sont traitées comme des événements isolés; en fait, ce sont en fait des flux. Cette observation peut être utilisée dans Node.js pour créer des fonctionnalités intéressantes. Par exemple, il est possible de traiter des fichiers pendant qu’ils sont encore en cours de téléversement, car les données arrivent via un flux et nous pouvons les traiter en ligne. Cela pourrait être fait pour encodage audio ou vidéo en temps réel et le proxy entre différentes sources de données (voir la section suivante).

PROCURATION

Node.js est facilement utilisé comme proxy côté serveur où il peut gérer un grand nombre de connexions simultanées de manière non bloquante. Il est particulièrement utile pour le proxy de différents services avec des temps de réponse différents ou pour la collecte de données à partir de plusieurs points sources.

Un exemple: considérons une application côté serveur communiquant avec des ressources tierces, extrayant des données de différentes sources ou stockant des actifs tels que des images et des vidéos vers des services cloud tiers.

projet angularjs et node js

Bien que des serveurs proxy dédiés existent, l'utilisation de Node à la place peut être utile si votre infrastructure de proxy est inexistante ou si vous avez besoin d'une solution pour le développement local. Par cela, je veux dire que vous pouvez créer une application côté client avec un serveur de développement Node.js pour les actifs et les demandes d'API de proxy / stubbing, tandis qu'en production, vous gérez ces interactions avec un service proxy dédié (nginx, HAProxy, etc. .).

COURTAGE - TABLEAU DE BORD DE L'OPÉRATEUR

Revenons au niveau de l’application. Un autre exemple où le logiciel de bureau domine, mais pourrait être facilement remplacé par une solution Web en temps réel est le logiciel de trading des courtiers, utilisé pour suivre les cours des actions, effectuer des calculs / analyses techniques et créer des graphiques / graphiques.

Le passage à une solution Web en temps réel permettrait aux courtiers de changer facilement de poste de travail ou de lieu de travail. Bientôt, nous pourrions commencer à les voir sur la plage en Floride… ou à Ibiza… ou à Bali.

TABLEAU DE BORD DE SURVEILLANCE DES APPLICATIONS

Un autre cas d'utilisation courant dans lequel Node-with-web-sockets s'intègre parfaitement: suivre les visiteurs du site Web et visualiser leurs interactions en temps réel.

Vous pouvez collecter des statistiques en temps réel de votre utilisateur, ou même les faire passer au niveau suivant en introduisant des interactions ciblées avec vos visiteurs en ouvrant un canal de communication lorsqu'ils atteignent un point spécifique de votre entonnoir. (Si vous êtes intéressé, cette idée est déjà produite par CANDDi .)

Imaginez comment vous pourriez améliorer votre entreprise si vous saviez ce que faisaient vos visiteurs en temps réel, si vous pouviez visualiser leurs interactions. Avec les sockets bidirectionnels en temps réel de Node.js, c'est désormais possible.

TABLEAU DE BORD DE SURVEILLANCE DU SYSTÈME

Voyons maintenant le côté infrastructure des choses. Imaginons, par exemple, un fournisseur SaaS qui souhaite offrir à ses utilisateurs une page de surveillance des services, comme la page d’état de GitHub. Avec la boucle d'événements Node.js, nous pouvons créer un puissant tableau de bord Web qui vérifie les statuts des services dans un asynchrone manière et transmet les données aux clients à l'aide de websockets.

Les statuts internes (intra-entreprise) et des services publics peuvent être signalés en direct et en temps réel grâce à cette technologie. Poussez cette idée un peu plus loin et essayez d'imaginer un Centre d'opérations réseau (NOC) les applications de surveillance chez un opérateur de télécommunications, un fournisseur de cloud / réseau / d'hébergement ou une institution financière, toutes s'exécutent sur la pile Web ouverte soutenue par Node.js et Websockets au lieu de Java et / ou Java Applets.

Remarque: n'essayez pas de créer des systèmes en temps réel durs dans Node (c'est-à-dire des systèmes nécessitant des temps de réponse cohérents). Erlang est probablement un meilleur choix pour cette classe d'application.

Où Node.js peut être utilisé

APPLICATIONS WEB CÔTÉ SERVEUR

Node.js avec Express.js peut également être utilisé pour créer des applications Web classiques côté serveur. Cependant, bien que possible, ce paradigme requête-réponse dans lequel Node.js transporterait du HTML rendu n'est pas le cas d'utilisation le plus typique. Il y a des arguments pour et contre cette approche. Voici quelques faits à considérer:

Avantages:

  • Si votre application n'a pas de calcul intensif en CPU, vous pouvez la créer en Javascript de haut en bas, même jusqu'au niveau de la base de données si vous utilisez la base de données d'objets de stockage JSON comme MongoDB. Cela facilite considérablement le développement (y compris l'embauche).
  • Les robots d'exploration reçoivent une réponse HTML entièrement rendue, ce qui est beaucoup plus convivial pour le référencement que, par exemple, une application à page unique ou une application Websockets exécutée au-dessus de Node.js.

Les inconvénients:

  • Tout calcul intensif en CPU bloquera la réactivité de Node.js.Une plateforme threadée est donc une meilleure approche. Vous pouvez également essayer de redimensionner le calcul [*].
  • Utiliser Node.js avec une base de données relationnelle est encore assez pénible (voir ci-dessous pour plus de détails). Faites-vous une faveur et choisissez n'importe quel autre environnement comme Rails, Django ou ASP.Net MVC si vous essayez d'effectuer des opérations relationnelles.
[*] Une alternative à ces calculs gourmands en ressources processeur consiste à créer un environnement hautement évolutif basé sur MQ avec un traitement back-end pour garder Node en tant que «commis» frontal pour traiter les demandes des clients de manière asynchrone.

Où Node.js ne doit pas être utilisé

APPLICATION WEB CÔTÉ SERVEUR AVEC DB RELATIONNELLE DERRIÈRE

En comparant Node.js avec Express.js à Ruby on Rails, par exemple, il y avait une décision claire en faveur de ce dernier lorsqu'il s'agissait d'accéder à des bases de données relationnelles comme PostgreSQL, MySQL et Microsoft SQL Server.

Les outils de base de données relationnelle pour Node.js en étaient encore à leurs débuts. D'autre part, Rails fournit automatiquement la configuration de l'accès aux données dès la sortie de la boîte avec des outils de support des migrations de schémas de base de données et d'autres gemmes (jeu de mots). Rails et ses infrastructures homologues ont des implémentations matures et éprouvées de la couche d'accès aux données Active Record ou Data Mapper. [*]

Mais les choses ont changé. Sequelize , TypeORM , et Étagère à livres ont parcouru un long chemin pour devenir des solutions ORM matures. Cela pourrait également valoir la peine de vérifier Rejoignez Monster si vous souhaitez générer du SQL à partir de requêtes GraphQL.

[*] Il est possible et pas rare d’utiliser Node uniquement en tant que frontal, tout en conservant votre back-end Rails et son accès facile à une base de données relationnelle. En relation: Le back-end: utilisation de Gatsby.js et Node.js pour les mises à jour statiques du site

CALCUL / TRAITEMENT LOURD DU SERVEUR

En ce qui concerne les calculs lourds, Node.js n'est pas la meilleure plate-forme. Non, vous ne voulez certainement pas créer un Serveur de calcul Fibonacci dans Node.js . En général, toute opération gourmande en CPU annule tous les avantages de débit qu'offre Node avec son modèle d'E / S non bloquant et piloté par les événements, car toutes les demandes entrantes seront bloquées pendant que le thread est occupé par votre calcul du nombre - en supposant que vous essayez pour exécuter vos calculs dans la même instance de Node avec laquelle vous répondez aux requêtes.

Comme indiqué précédemment, Node.js est monothread et n'utilise qu'un seul cœur de processeur. Quand il s'agit d'ajouter la concurrence sur un serveur multicœur, il y a du travail effectué par l'équipe de base de Node sous la forme d'un module de cluster [ref: http://nodejs.org/api/cluster.html]. Vous pouvez également exécuter plusieurs instances de serveur Node.js assez facilement derrière un proxy inverse via nginx .

Avec le clustering, vous devez toujours décharger tous les calculs lourds vers des processus d'arrière-plan écrits dans un environnement plus approprié pour cela, et les faire communiquer via un serveur de file d'attente de messages comme RabbitMQ.

Même si votre traitement en arrière-plan peut être exécuté sur le même serveur au départ, une telle approche a le potentiel d'une évolutivité très élevée. Ces services de traitement en arrière-plan pourraient être facilement distribués sur des serveurs de travail distincts sans qu'il soit nécessaire de configurer les charges de serveurs Web frontaux.

Bien sûr, vous utiliseriez la même approche sur d’autres plates-formes, mais avec Node.js, vous obtenez ce débit élevé de demandes / s dont nous avons parlé, car chaque demande est une petite tâche gérée très rapidement et efficacement.

Conclusion

Nous avons discuté de Node.js de la théorie à la pratique, en commençant par ses objectifs et ses ambitions, et en terminant par ses points forts et ses pièges. Lorsque les gens rencontrent des problèmes avec Node, cela se résume presque toujours au fait que les opérations de blocage sont la racine de tout mal —99% des abus de Node sont une conséquence directe.

Dans Node, les opérations de blocage sont à l'origine de tous les maux - 99% des mauvaises utilisations de Node en sont une conséquence directe. Tweet

N'oubliez pas: Node.js n'a jamais été créé pour résoudre le problème de mise à l'échelle des calculs. Il a été créé pour résoudre le problème de mise à l'échelle des E / S, qu'il fait vraiment bien .

Pourquoi utiliser Node.js? Si votre cas d'utilisation ne contient pas d'opérations gourmandes en ressources processeur et n'accède à aucune ressource de blocage, vous pouvez exploiter les avantages de Node.js et profiter d'applications réseau rapides et évolutives. Bienvenue sur le Web en temps réel.

Comprendre les bases

Qu'est-ce que Node.js?

Node.js est un environnement d'exécution JavaScript côté serveur. Il est open-source, y compris le moteur V8 de Google, libuv pour la compatibilité multiplateforme et une bibliothèque principale. Notamment, Node.js n'expose pas d'objet global 'window', car il ne s'exécute pas dans un navigateur.

À quoi sert Node.js?

Node.js est principalement utilisé pour les serveurs non bloquants et pilotés par les événements, en raison de sa nature monothread. Il est utilisé pour les sites Web traditionnels et les services d'API back-end, mais a été conçu avec à l'esprit les architectures push en temps réel.

Qu'est-ce qu'un framework Web?

Les frameworks Web comme Angular et React sont des bibliothèques qui aident à organiser et à générer le code frontal qui s'exécute dans un navigateur Web. Ils réduisent le temps de développement, réutilisant le code pour les opérations courantes. Certains frameworks Web sont «full stack», ce qui signifie qu'ils génèrent également le code back-end qui s'exécute sur un serveur Web.

Node.js est-il un framework?

Non, c'est un environnement et des frameworks back-end y sont exécutés. Les plus populaires incluent Express.js (ou simplement Express) pour les serveurs HTTP et Socket.IO pour les serveurs WebSocket.

Node.js est-il un langage de programmation?

Non, le '.js' signifie que le langage de programmation que vous utilisez avec Node.js est JavaScript (ou tout ce qui peut y être transpilé, comme TypeScript, Haxe ou CoffeeScript.)

Pourquoi Node.js est-il populaire?

En plus d'être efficace dans ce qu'il fait, Node.js est populaire car il possède un énorme écosystème actif, open-source et basé sur JavaScript. En outre, cela n'a pas tendance à rompre la compatibilité entre les versions de manière majeure.

Quelle est la différence entre Node.js et Angular / AngularJS?

Node.js exécute du code JavaScript dans son environnement sur le serveur, tandis que Angular est un framework JavaScript qui est exécuté sur le client (c'est-à-dire dans un navigateur Web.)

Pourquoi Node.js est-il mauvais?

Node.js, étant monothread, peut être un mauvais choix pour les serveurs Web faisant également office de serveurs de calcul, car des calculs lourds bloquent la réactivité du serveur. Cependant, Node.js lui-même n'est pas mauvais: la technologie est assez mature et largement utilisée pour de nombreux types de serveurs.

Pourquoi y a-t-il autant de pythons?

La Technologie

Pourquoi y a-t-il autant de pythons?
Mise en réseau centralisée et découplée iOS: Tutoriel AFNetworking avec une classe Singleton

Mise en réseau centralisée et découplée iOS: Tutoriel AFNetworking avec une classe Singleton

Back-End

Articles Populaires
Ingénieur Senior Ruby on Rails
Ingénieur Senior Ruby on Rails
Repenser l'interface utilisateur de la plate-forme TV
Repenser l'interface utilisateur de la plate-forme TV
Soutenir l'offre technologique grâce à l'éducation STEM
Soutenir l'offre technologique grâce à l'éducation STEM
UX personnalisé et puissance du design et de l'émotion
UX personnalisé et puissance du design et de l'émotion
Explication du flux Git amélioré
Explication du flux Git amélioré
 
Un guide sur les moteurs Rails dans la nature: Exemples concrets de moteurs Rails en action
Un guide sur les moteurs Rails dans la nature: Exemples concrets de moteurs Rails en action
Conception d'une VUI - Interface utilisateur vocale
Conception d'une VUI - Interface utilisateur vocale
Huit raisons pour lesquelles Microsoft Stack est toujours un choix viable
Huit raisons pour lesquelles Microsoft Stack est toujours un choix viable
Tirer le meilleur parti des actions - Leçons d'un ancien analyste de recherche
Tirer le meilleur parti des actions - Leçons d'un ancien analyste de recherche
Addiction au rachat d'actions: études de cas de succès
Addiction au rachat d'actions: études de cas de succès
Articles Populaires
  • réglage des performances dans le serveur SQL
  • étude de cas sur la budgétisation du capital avec solution
  • node js renvoie la valeur de la fonction
  • comment devenir coach agile
  • qu'est-ce que tdd et bdd
  • commandes de bot discord c#
Catégories
  • La Technologie
  • Personnes Et Équipes
  • Gestion De Projet
  • Équipes Distribuées
  • © 2022 | Tous Les Droits Sont Réservés

    portaldacalheta.pt