Peut-on dire que node.js est un serveur web?

J’ai trouvé que je suis confus entre le framework 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 en quelque sorte node.js est une sorte de serveur Web, pas de webframe (Express), pourquoi devons-nous mettre l’ensemble du fichier node.js au-dessus du serveur Nginx dans la pratique? Question sur SO

Qui peut aider???

Trousse

serveur Web

Le serveur Web peut faire référence au matériel (l’ordinateur) ou au logiciel (l’application informatique) qui permet de fournir du contenu accessible via Internet. 1

La fonction principale d’un serveur Web est de fournir des pages Web sur la demande aux clients. Cela signifie la livraison de documents HTML et de tout contenu supplémentaire pouvant être inclus dans un document, tels que des images, des feuilles de style et des scripts.

Un serveur Web est la base pour fournir des demandes / pagess aux clients / utilisateurs sur Internet

Cadre web

Un cadre d’application Web est un cadre logiciel conçu pour prendre en charge le développement de sites Web dynamics, d’applications Web et de services Web. Le cadre vise à alléger les frais généraux associés aux activités courantes effectuées dans le développement Web. Par exemple, de nombreux frameworks fournissent des bibliothèques pour l’access aux bases de données, les frameworks de templates et la gestion des sessions, et ils favorisent souvent la réutilisation du code.

Une structure Web utilise un serveur Web pour transmettre les demandes au client, mais ce n’est pas le serveur Web.

Node.js

Node.js est une plate-forme basée sur l’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 piloté par événement qui le rend léger et efficace, parfait pour les applications temps réel gourmandes en données qui s’exécutent sur des périphériques dissortingbués.

Mais encore une fois, 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 en utilisant le langage de programmation Javascript au lieu du navigateur. 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 mettre Nginx devant node.js à cause de la stabilité du projet. Le projet était et est encore jeune. Nginx est un serveur Web éprouvé qui continuera à fonctionner pendant que node.js peut se bloquer. Ensuite, beaucoup d’utilisateurs utilisent simplement node.js pour cela.

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 à ce jour provient probablement d’un article de Rob Gravelle intitulé “An Intro to Node.js” :

Node.js est un environnement d’exécution et une bibliothèque de pièces pour la création d’applications réseau à l’aide de JavaScript côté serveur. Il utilise le moteur d’exécution JavaScript de Chrome pour exécuter le code JS directement sans avoir recours au sandbox du navigateur.

En outre, l’encyclopédie PCMAG.COM fournit la définition suivante du “moteur d’exécution”:

Logiciels dont certaines applications dépendent pour s’exécuter sur l’ordinateur. Le moteur d’exécution doit être en cours d’exécution sur l’ordinateur pour que l’application s’exécute. Il fournit des routines et des fonctions communes aux applications et convertit généralement le programme, qui est un langage intermédiaire intermédiaire, en langage machine.

L’ article de Wikipedia intitulé “Système d’exécution” déclare également:

Un système d’exécution (également appelé système d’exécution, environnement d’exécution ou simplement runtime) implémente le comportement de base d’un langage informatique, qu’il s’agisse d’un langage compilé, d’un langage interprété, d’un langage incorporé spécifique au domaine ou d’un API comme c’est pthreads.

… Un système d’exécution peut implémenter le comportement de tâches telles que dessiner du texte à l’écran ou établir une connexion Internet. Il agit également généralement comme une couche d’abstraction qui masque la complexité ou les variations des services offerts par le système d’exploitation.

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 beaucoup en commun. 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 les applications CLI.

Donc, pour en revenir à votre question, pouvons-nous dire que Node.js est un serveur Web? Changeons “Node.js” pour “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.

Dire que le nœud 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

  1. [Environnement d’exécution Javascript (moteur Chrome v8) + Node Library / APIs]
  2. Peut créer un serveur Web, peut également être décrit comme un serveur d’applications

Express

  1. Framework Web (utilise le serveur Web de nodejs pour servir les fichiers)

Nginx

  1. serveur Web

En production, la plupart des utilisateurs utilisent Nginx en tant que serveur proxy pour servir des fichiers statiques et d’autres éléments tels que la mise en cache, le routage, etc.

Je classerais node.js comme une structure de serveur, avec des packages disponibles qui peuvent l’utiliser comme serveur HTTP, serveur WebSocket, 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 reverse proxy sur plusieurs machines exécutant votre application serveur.

Serveur Web est quelque chose qui sert ses clients via Internet via les protocoles et Web Framework est quelque chose comme nous appelons en tant que compilateur. Il comprend toutes les bibliothèques, règles de syntaxe, etc.

Et node.js est un cadre !!

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 modularisés que le monde Javascript actuel des frameworks. librement.

Je ne vois aucune raison pour laquelle une technologie pouvant servir des applications complexes sur le Web ne devrait pas être appelée serveur Web ou serveur d’applications Web!

Si vous combinez, disons Nuxt comme un frontal, avec Feathers comme backend – vous aurez un backend servant une API REST et une interface utilisateur rendue côté serveur!

Bien sûr, vous pourriez (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 servent un objective – n’est-ce pas? – Des fonctionnalités telles que la stabilité, l’évolutivité, etc., seront ajoutées à ces technologies au fil du temps. Pour l’instant, ils sont encore assez nouveaux.

Node est simplement un environnement d’exécution . Lorsque vous exécutez javascript sur un nœud, vous lui donnez tellement de puissance (les stéroïdes), dont l’un est la création de fonctionnalités de serveur utilisées pour les pages http.