it-swarm.com.de

Können wir sagen, dass node.js ein Webserver ist?

Ich habe festgestellt, dass ich zwischen Web-Framework und Webserver verwirrend bin.

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

Können wir sagen, dass node.js ein Webserver ist? Ich bin so verwirrt zwischen Webserver/Framework.

Wenn node.js irgendwie eine Art Webserver ist und kein Webframework (Express tut), warum müssen wir dann die gesamte node.js in der praktischen Praxis auf den Nginx-Server legen ?? Frage zu SO

Wer kann helfen???

Kit

58
Kit Ho

Webserver

Der Webserver kann sich entweder auf die Hardware (den Computer) oder auf die .__ beziehen. Software (die Computeranwendung), die hilft, Inhalte zu liefern, die ist über das Internet erreichbar . 1

Die Hauptfunktion eines Webservers ist die Bereitstellung von Webseiten auf der Anfrage an Kunden. Dies bedeutet die Übermittlung von HTML-Dokumenten und beliebigen. zusätzlicher Inhalt, der in einem Dokument enthalten sein kann, z. B. Bilder, Stylesheets und Skripte.

Ein Webserver ist die Basis für die Übermittlung von Anforderungen/Pagess an die Clients/Benutzer im Internet

Webframework

Ein Webanwendungsframework ist ein Software-Framework, das entwickelt wurde zur Unterstützung der Entwicklung dynamischer Websites, Webanwendungen und Internetdienste. Der Rahmen zielt darauf ab, den damit verbundenen Overhead zu verringern mit gemeinsamen Aktivitäten in der Webentwicklung. Zum Beispiel viele Frameworks stellen Bibliotheken für den Datenbankzugriff zur Verfügung. Frameworks und Session-Management, und sie fördern häufig die Wiederverwendung von Code.

Ein Webframework verwendet einen Webserver, um die Anforderungen an den Client zu übermitteln, es handelt sich jedoch nicht um den Webserver.

Node.js

Node.js ist eine Plattform, die auf der JavaScript-Laufzeitumgebung von Chrome basiert. Aufbau schneller, skalierbarer Netzwerkanwendungen. Node.js verwendet ein ereignisgesteuertes, nicht blockierendes E/A-Modell, das es leichtgewichtig macht und effizient, ideal für datenintensive Echtzeitanwendungen, die ausgeführt werden über verteilte Geräte.

Sie können jedoch auch CLI-Apps erstellen, so dass Sie eher eine Plattform zum Schreiben von JavaScript-Programmen sehen sollten, die auf Ihrem Server (Computer) mit JavascriptProgrammiersprache anstelle von ausgeführt werden nur im Browser wie am Anfang. Ich denke, du könntest es als Javascript++ sehen?

Sie können Webserver auch mit node.js schreiben, wie Sie auf der Startseite von node.js sehen können. Am Anfang sagte Ryan, Sie könnten Nginx vor node.js platzieren, da das Projekt stabil ist. Das Projekt war und ist noch ziemlich jung. Nginx ist ein bewährter Webserver, der weiterhin ausgeführt wird, während node.js abstürzt. Dann verwenden viele Benutzer einfach node.js dafür.

40
Alfred

Ich würde sagen, Node.js ist eine Laufzeitumgebung oder eine Runtime Engine.

Die beste Definition, die ich bisher gefunden habe, stammt wahrscheinlich aus einem Artikel von Rob Gravelle mit dem Titel "Ein Intro für Node.js" :

Node.js ist eine Teil-Laufzeitumgebung und Teilebibliothek zum Erstellen von Netzwerkanwendungen mithilfe von serverseitigem JavaScript. Es verwendet die JavaScript-Laufzeit-Engine von Chrome, um JS-Code direkt auszuführen, ohne dass die Browser-Sandbox erforderlich ist.

Die PCMAG.COM-Enzyklopädie enthält auch das folgende Definition von "Runtime Engine":

Software, von der bestimmte Anwendungen abhängen, um auf dem Computer ausgeführt zu werden. Die Laufzeit-Engine muss auf dem Computer ausgeführt werden, damit die Anwendung ausgeführt werden kann. Sie bietet allgemeine Routinen und Funktionen, die die Anwendungen benötigen, und konvertiert das Programm, das sich in einer Zwischensprache befindet, normalerweise in Maschinensprache.

Auch der Wikipedia-Artikel mit dem Titel "Laufzeitsystem" erklärt:

Ein Laufzeitsystem (auch Laufzeitsystem, Laufzeitumgebung oder nur Laufzeit genannt) implementiert das grundlegende Verhalten einer Computersprache, unabhängig davon, ob es sich um eine kompilierte Sprache, eine interpretierte Sprache, eine eingebettete domänenspezifische Sprache handelt oder über eine API aufgerufen wird wie es ist pthreads.

Ein Laufzeitsystem kann das Verhalten von Aufgaben implementieren, z. B. das Zeichnen von Text auf dem Bildschirm oder das Herstellen einer Internetverbindung. Sie fungiert normalerweise auch als Abstraktionsschicht, die die Komplexität oder Variationen der vom Betriebssystem angebotenen Dienste verbirgt.

Gibt es irgendwelche Laufzeitumgebungen (oder sogar Software-Plattformen) wie Node.js? Ich denke, JRE ist ein gutes Beispiel für eine solche Umgebung. Node.js und JRE - sie haben viele Gemeinsamkeiten. Sie verfügen alle über (eine Art) virtuelle Maschine, eine Klassenbibliothek und ein Framework, um viele Arten von Anwendungen einschließlich CLI-Anwendungen zu implementieren.

Zurück zu Ihrer Frage: Können wir sagen, dass Node.js ein Webserver ist? Ändern wir "Node.js" für "JRE" und antworten Sie, ob JRE ein Webserver ist. Die Antwort ist nein.

Wir können nur sagen, dass Node.js eine Laufzeitumgebung ist, in der ein Webserver implementiert werden kann. Nun, das ist meine Meinung.

18
ezpresso

Wenn ein Knoten ein Webserver ist, kann man sagen, dass Javacipt nur innerhalb eines Browsers ausgeführt werden kann. Man kann sagen, dass es aber auch viele andere Dinge tun kann.

NodeJS

  1. [Javascript-Laufzeitumgebung (Chrome v8-Engine) + Knoten Bibliothek/APIs] 
  2. Kann einen Webserver erstellen, kann auch als Anwendungsserver bezeichnet werden

Ausdrücken

  1. Web-Framework (verwendet den Webserver von nodejs zum Bereitstellen von Dateien)

Nginx

  1. Webserver

In der Produktion verwenden die meisten Benutzer Nginx vor dem Knotenserver als Proxyserver, um statische Dateien und andere Elemente wie Caching, Routing usw. bereitzustellen.

12
Esakki Krishnan

Ich würde node.js als Server-Framework klassifizieren, wobei Pakete zur Verfügung stehen, die es als HTTP-Server oder WebSocket-Server oder Ihr eigenes benutzerdefiniertes Protokoll usw. verwenden können.

Der Grund, warum Sie nginx vor Ihren node.js-Server stellen, ist der HTTP-Lastausgleich und Reverse-Proxying auf mehreren Computern, auf denen Ihre Serveranwendung ausgeführt wird.

11
cmv

Webserver ist etwas, das seine Kunden über das Internet über Protokolle bedient, und Web Framework ist etwas, das wir als Compiler nennen. Es besteht aus allen erforderlichen Bibliotheken, Syntaxregeln usw.

Und node.js ist ein Framework !!

1
Mad coder.

Nein, es ist eine Laufzeitumgebung ... es ist also kein Webserver, aber es braucht keinen, um ausgeführt zu werden. Wahrscheinlich kann es deshalb verwirrend sein. Es kann eigenständig ohne Webserver ausgeführt werden, da es selbst eine Laufzeitumgebung ist, jedoch kein Webserver.

0
stuckedoverflow

Wie fühle ich deinen Schmerz! 

Wie viele fiel es mir schwer, zur Essenz von Node.js zu gelangen, da die meisten Leute nur über den Teil des Knotens schreiben/sprechen, den sie als nützlich erachten Zweck. Ich muss sagen, dass ich es für verrückt halte, zu sagen, dass Node nur eine JavaScript-Laufzeit ist. Die Verwendung von JavaScript durch Node - und seine Auswahl der V8-Laufzeit - ist einfach bedeutet zu Ende, die besten Werkzeuge für das Problem, das die Entwickler von Node lösen wollten.

Der Hauptzweck von Node bestand darin, die Verwaltung von Benutzerereignissen in einer Webanwendung effizienter zu gestalten. Daher wird Node überwiegend am Ende einer Web-App verwendet. Die Ereignisverwaltung verlangt, dass etwas auf dem Servercomputer auf diese Ereignisse wartet. Daher muss ein http-Server eingerichtet werden, um jedes Ereignis an das entsprechende Handler-Skript weiterzuleiten. Der Knoten verwendet JavaScript für die Ereignisbehandlung, da JavaScript über Rückruffunktionen verfügt: Dadurch kann eine Aufgabe angehalten werden, bis das Ergebnis einer abhängigen Aufgabe zurückgegeben wird. Nicht viele andere Sprachen verfügen über diese Funktion, und solche, die über einen Dolmetscher verfügen, sind möglicherweise nicht so effizient wie die V8-Laufzeitumgebung von Google. Die meisten Webentwickler kennen JavaScript, so dass mit Node kein zusätzlicher Fremdsprachenerwerb möglich ist. Darüber hinaus können Callback-Funktionen verwendet werden, um alle Benutzeraufgaben in einem einzigen Thread zu platzieren, ohne dass explizite Blockierung auf Aufgaben angewendet wird, die Zugriff auf die Datenbank oder das Dateisystem erfordern. Dies führt zu einer überlegenen Ausführungseffizienz von Node unter starker gleichzeitiger Nutzung - was der Hauptzweck seiner Entwicklung war.

Um Node-Benutzern das schnelle Schreiben von End-Code zu erleichtern, haben die Entwickler von Node auch das Repository für NPM (Node Package Manager) organisiert: Hierbei handelt es sich um einen benutzergesteuerten Open Source-Satz von Skriptpaketen für verschiedene Standard- und benutzerdefinierte Funktionen. Alle Node-Projekte ermöglichen den Import von NPM-Paketen in ein Projekt über den etablierten Befehlnpm install

Benutzeranfragen, die über Node abgewickelt werden, sind beispielsweise Registrierung/Anmeldung/Abmeldung/Formularfeldüberprüfung. Verschiedene von der Web-App benötigte Datenbankabfragen werden an den Node-Port gesendet. Andere Arten von Benutzeranfragen, z. Um eine andere Webseite anzuzeigen, können Sie auch CSS/JS/Bilder usw. an Node senden. Diese werden jedoch normalerweise nicht an den Node-Port gesendet, sondern vom Browser weiterhin an die Standardports der Server-Maschinen gesendet, an denen der Webserver sie verarbeitet. 

Daher ist in der Praxis der Knoten normalerweise ein Server, der jedoch nur einige der Funktionen des Webserverprogramms .. _ ersetzt. Andere Anwendungen von Node nutzen einfach die eine oder andere ihrer Funktionen, z. der V8-Motor. Dies sind jedoch nur Nebenanwendungen von Node.

0
Trunk

Ich denke, das Problem ist, dass die Terminologie von "Webserver" oder "Webanwendungsserver" von der JEE-Welt dominiert wird und von Produkten, die nicht so modular sind wie die heutige Javascript-Welt von Frameworks, die wiederum mehr oder weniger kombiniert werden können frei.

Ich sehe keinen Grund, warum eine Technologie, die komplexe Anwendungen über das Web bedienen kann, nicht als Webserver oder Webanwendungsserver bezeichnet werden sollte!

Wenn Sie kombinieren, sagen wir Nuxt als Frontend, mit Feathers als Backend - haben Sie ein Backend, das eine REST - API und eine serverseitig gerenderte Benutzeroberfläche bereitstellt !

Natürlich können Sie das (falsch) verwenden, um statische Inhalte bereitzustellen - dann würde ich es einen Webserver nennen, oder Sie könnten es verwenden, um eine vollständige Anwendung zu erstellen und bereitzustellen - dann würde ich es einen Webanwendungsserver nennen.

Es sind die kombinierten Merkmale oder Eigenschaften, die einen Zweck erfüllen - richtig? - Funktionen wie Stabilität, Skalierbarkeit und dergleichen sind meiner Meinung nach etwas, das diesen Technologien im Laufe der Zeit hinzugefügt wird. Im Moment sind sie noch ziemlich neu.

0
cslotty