J'ai trouvé que je confondais le cadre Web et le serveur Web.
Apache is a web server.
Tornado is a web server written in Python.
Nginx is a web server written in C
Zend is a web framework in php
Flask/Bottle is a web framework in Python
RoR is a web framework written in Ruby
Express is a web framework written in JS under Node.JS
Peut-on dire que node.js est un serveur Web ??? Je suis tellement confus entre serveur Web / framework.
Si d'une manière ou d'une autre node.js est une sorte de serveur Web, pas de webframework (Express le fait), pourquoi avons-nous besoin de mettre tout node.js au-dessus du serveur Nginx dans une pratique utile? Question sur SO
Qui peut aider???
Trousse
node.js
webserver
web-frameworks
Kit Ho
la source
la source
Réponses:
serveur Web
Un serveur Web est la base pour fournir des demandes / pagess aux clients / utilisateurs sur Internet
Cadre Web
Un framework Web utilise un serveur Web pour fournir les demandes au client, mais ce n'est pas le serveur Web.
Node.js
Mais là encore, vous pouvez également créer des applications CLI, donc je pense que vous devriez le voir davantage comme une plate-forme pour écrire des programmes javascript à exécuter sur votre serveur (ordinateur) en utilisant le langage de programmation Javascript au lieu de simplement dans le navigateur comme au début. Je pense que vous pourriez le voir comme ??
Javascript++
Vous pouvez également écrire un serveur Web avec node.js comme vous pouvez le voir sur la première page de node.js. Au début, Ryan a dit que vous pouviez placer Nginx devant node.js en raison de la stabilité du projet. Le projet était et est encore assez jeune. Nginx est un serveur Web éprouvé qui continuera à fonctionner pendant que node.js peut planter. Là encore, beaucoup d'utilisateurs utilisent simplement node.js pour cela.
la source
Je dirais que Node.js est un environnement d'exécution ou un moteur d'exécution.
La meilleure définition que j'ai trouvée jusqu'à présent provient probablement d'un article de Rob Gravelle intitulé "An Intro to Node.js" :
L'Encyclopédie PCMAG.COM fournit également la définition suivante de «moteur d'exécution»:
L' article de Wikipédia intitulé "Système d'exécution" déclare également:
Eh bien, existe-t-il des environnements d'exécution (ou même des plates-formes logicielles) comme Node.js? Je suppose que JRE est un bon exemple d'un tel environnement. Node.js et JRE - ils ont de nombreux points communs. Ils ont tous (une sorte de) machine virtuelle, une bibliothèque de classes et un framework pour implémenter de nombreux types d'applications, y compris des applications CLI.
Donc, pour revenir à votre question, pouvons-nous dire que Node.js est un serveur Web? Changeons "Node.js" par "JRE" et répondons si JRE est un serveur Web. La réponse est non.
Tout ce que nous pouvons dire, c'est que Node.js est un environnement d'exécution que l'on peut utiliser pour implémenter un serveur Web. Eh bien, c'est mon avis.
la source
Dire que node est un serveur Web, c'est comme dire que javacript ne peut fonctionner que dans un navigateur, vous pouvez le dire, mais il peut aussi faire beaucoup d'autres choses.
NodeJS
Express
Nginx
En production, la plupart des gens utilisent Nginx devant le serveur de nœuds en tant que serveur proxy pour servir des fichiers statiques et d'autres éléments tels que la mise en cache, le routage, etc.
la source
Je classerais node.js comme une infrastructure de serveur, avec des packages disponibles qui peuvent l'utiliser comme serveur HTTP, ou serveur WebSocket, ou votre propre protocole personnalisé, etc.
La raison pour laquelle vous pouvez placer nginx devant votre serveur node.js est pour l'équilibrage de charge HTTP et le proxy inverse sur plusieurs machines exécutant votre application serveur.
la source
Comment je ressens ta douleur!
Comme beaucoup, j'ai eu du mal à accéder à l'essence de Node.js car la plupart des gens n'écrivent / ne parlent que de la partie de Node qu'ils trouvent utile - et la partie qu'ils trouvent intéressante est généralement un avantage secondaire de Node plutôt que son principal. objectif. Je dois dire que je pense que c'est fou pour les gens de dire que Node n'est qu'un runtime JavaScript. L'utilisation de JavaScript par Node - et sa sélection du runtime V8 - sont simplement des moyens pour atteindre une fin , les meilleurs outils pour le problème que les développeurs de Node voulaient résoudre.
L'objectif principal de Node était de rendre la gestion des événements utilisateur dans une application Web plus efficace. Donc Node est massivementutilisé sur le back-end d'une application Web. La gestion des événements exige que quelque chose écoute sur la machine serveur ces événements utilisateur. Un serveur http doit donc être configuré pour acheminer chaque événement vers son script de gestionnaire approprié. Node fournit un cadre pour configurer rapidement un serveur pour écouter sur un port dédié les demandes des utilisateurs. Node utilise JavaScript pour la gestion des événements car JavaScript a des fonctions de rappel: cela permet à une tâche d'être suspendue jusqu'à ce que le résultat d'une tâche dépendante soit renvoyé. Peu d'autres langues ont cette fonctionnalité et celles qui en ont peuvent ne pas avoir d'interprète aussi efficace que le moteur d'exécution V8 de Google. La plupart des développeurs Web connaissent JavaScript, il n'y a donc pas d'apprentissage de langue supplémentaire avec Node. De plus, avoir des fonctions de rappel permet de mettre toutes les tâches utilisateur sur un seul threadsans que le blocage explicite ne soit appliqué aux tâches exigeant un accès à la base de données ou au système de fichiers. Et c'est ce qui conduit à l'efficacité d'exécution supérieure de Node sous une utilisation simultanée intensive - l'objectif principal de son développement.
Pour aider les utilisateurs de Node à écrire rapidement du code back-end, les développeurs de Node ont également organisé à la fois une bibliothèque JS intégrée pour les tâches de routine (par exemple, les questions liées aux requêtes HTTP, le (dé) codage de chaînes, les flux, etc.) et le référentiel NPM (Node Package Manager) : il s'agit d'un ensemble de packages de scripts open source gérés par l'utilisateur pour diverses fonctions standard et personnalisées. Tous les projets Node permettent l'importation de packages NPM dans un projet via la commande npm install établie .
Les demandes des utilisateurs traitées via Node seront des éléments nécessaires à l'application Web, comme l'authentification, les requêtes de base de données, la gestion de contenu (Strapi CMS), etc. Tout cela sera envoyé au port Node. (Lorsque l'analyse des données obtenues à partir d'une base de données prend beaucoup de temps CPU, ce type de processus est mieux placé sur un thread séparé afin de ne pas ralentir les requêtes utilisateur plus simples.) Autres types de requêtes utilisateur, par exemple pour charger une autre page Web , téléchargez les fichiers CSS / JS / image, etc., continueront à être envoyés par le navigateur au (x) port (s) par défaut de la machine serveur où le programme du serveur Web (Apache, NGinx, etc.) les gérera.
Ainsi, en pratique , Node est principalement un framework pour la création rapide de serveurs et la gestion des événements, mais qui ne remplace que certaines des fonctions du programme de serveur Web.
D'autres utilisations non-backend de Node exploitent simplement l'une ou l'autre de ses fonctionnalités, par exemple le moteur V8. Par exemple, les outils de construction frontale Grunt et Gulp utilisent Node.js pour traiter un script de construction qui peut être codé pour convertir SASS en CSS, réduire les fichiers CSS / JS, optimiser la taille / le chargement de l'image, etc. Mais ce genre de travail est vraiment juste l'utilisation de sous-produits de Node, et non son utilisation principale qui est de créer des processus backend efficaces pour les applications Web.
la source
Le serveur Web est quelque chose qui sert ses clients via Internet via des protocoles et Web Framework est quelque chose comme ce que nous appelons en tant que compilateur. Il comprend toutes les bibliothèques requises, les règles de syntaxe, etc.
Et node.js est un framework !!
la source
Je pense que le problème est que la terminologie de "serveur Web" ou "serveur d'applications Web" est dominée par le monde JEE, et les produits, qui ne sont pas aussi modulaires que le monde Javascript actuel des frameworks, qui à leur tour peuvent être plus ou moins combinés librement.
Je ne vois aucune raison pour laquelle une technologie, qui peut servir des applications complexes sur le Web, ne devrait pas être appelée un serveur Web ou un serveur d'applications Web!
Si vous combinez, disons Nuxt en tant qu'interface , avec Feathers en tant que backend - vous aurez un backend servant une API REST et une interface utilisateur rendue côté serveur!
Bien sûr, vous pourriez (mal) utiliser cela pour servir du contenu statique - alors je l'appellerais un serveur Web, ou vous pourriez l'utiliser pour créer et servir une application complète - alors je l'appellerais un serveur d'applications Web.
Ce sont les caractéristiques ou qualités combinées qui se résument à un objectif, n'est-ce pas? - Des fonctionnalités telles que la stabilité, l'évolutivité, etc. Pour l'instant, ils sont encore assez récents.
la source
Je viens d'utiliser Node.js pour la première fois pour créer un bot Discord. Ma pensée était "Wow, Node.js est un serveur? Je pensais que c'était une bibliothèque JS!" Ou peut-être aurais-je pu y penser comme un cadre.
Est-ce un serveur Web? Non, mais vous pouvez en faire un avec. Est-ce un serveur? Comme dans le logiciel qui reçoit les requêtes et sert le résultat? Oui.
Dans mon cas, j'ai émis la commande:
node index.js
Et maintenant, Node.js attend les demandes de réponse (via mon bot). C'est un serveur, mais il ne sert pas de pages Web.
la source
Non, c'est un environnement d'exécution ... donc ce n'est pas un serveur Web mais il n'en a pas besoin pour fonctionner. C'est donc probablement pourquoi cela pourrait prêter à confusion. Il peut fonctionner de manière autonome sans avoir besoin d'un serveur Web car il s'agit d'un moteur d'exécution lui-même, mais encore une fois, ce n'est pas un serveur Web.
la source