Ich habe festgestellt, dass ich zwischen Webframework und Webserver verwechsle.
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, kein Webframework (Express), warum müssen wir dann in der nützlichen Praxis die gesamte node.js auf den Nginx-Server legen? Frage zu SO
Wer kann helfen???
Kit
node.js
webserver
web-frameworks
Kit Ho
quelle
quelle
Antworten:
Webserver
Ein Webserver ist die Grundlage für die Übermittlung von Anfragen / Seiten an die Clients / Benutzer im Internet
Web-Framework
Ein Webframework verwendet einen Webserver, um die Anforderungen an den Client zu senden, es ist jedoch nicht der Webserver.
Node.js
Andererseits können Sie auch CLI-Apps erstellen. Ich denke, Sie sollten es eher als Plattform betrachten, um Javascript-Programme zu schreiben, die auf Ihrem Server (Computer) mit der Programmiersprache Javascript ausgeführt werden, anstatt wie am Anfang nur im Browser. Ich denke du könntest es sehen als
Javascript++
??Sie können auch einen Webserver mit node.js schreiben, wie Sie auf der Startseite von node.js sehen können. Am Anfang sagte Ryan, Sie könnten Nginx wegen der Stabilität des Projekts vor node.js stellen. Das Projekt war und ist noch ziemlich jung. Nginx ist ein bewährter Webserver, der weiterhin ausgeführt wird, während node.js abstürzen kann. Andererseits verwenden viele Benutzer einfach node.js dafür.
quelle
Ich würde sagen, Node.js ist eine Laufzeitumgebung oder eine Laufzeit-Engine.
Die wahrscheinlich beste Definition, die ich bisher gefunden habe, stammt aus einem Artikel von Rob Gravelle mit dem Titel "Ein Intro zu Node.js" :
Auch die PCMAG.COM-Enzyklopädie enthält die folgende Definition von "Laufzeit-Engine":
Auch der Wikipedia-Artikel mit dem Titel "Laufzeitsystem" erklärt:
Gibt es Laufzeitumgebungen (oder sogar Softwareplattformen) wie Node.js? Ich denke, JRE ist ein gutes Beispiel für eine solche Umgebung. Node.js und JRE - sie haben viele gemeinsam. Sie alle verfügen über (eine Art) virtuelle Maschine, eine Klassenbibliothek und ein Framework zur Implementierung vieler Arten von Anwendungen, einschließlich CLI-Anwendungen.
Um auf Ihre Frage zurückzukommen: Können wir sagen, dass Node.js ein Webserver ist? Lassen Sie uns "Node.js" für "JRE" ändern und antworten, ob JRE ein Webserver ist. Die Antwort ist nein.
Wir können nur sagen, dass Node.js eine Laufzeitumgebung ist, mit der ein Webserver implementiert werden kann. Nun, das ist meine Meinung.
quelle
Zu sagen, dass der Knoten ein Webserver ist, ist wie zu sagen, dass Javacript nur in einem Browser ausgeführt werden kann. Sie können das sagen, aber es kann auch viele andere Dinge tun.
NodeJS
ausdrücken
Nginx
In der Produktion verwenden die meisten Benutzer Nginx vor dem Knotenserver als Proxyserver, um statische Dateien und andere verschiedene Elemente wie Caching, Routing usw. bereitzustellen.
quelle
Ich würde node.js als Server-Framework klassifizieren, mit verfügbaren Paketen, die es als HTTP-Server, WebSocket-Server oder Ihr eigenes benutzerdefiniertes Protokoll usw. verwenden können.
Der Grund, warum Sie nginx möglicherweise vor Ihren node.js-Server stellen, ist der HTTP-Lastausgleich und das Reverse-Proxy auf mehreren Computern, auf denen Ihre Serveranwendung ausgeführt wird.
quelle
Wie ich deinen Schmerz fühle!
Wie viele andere fiel es mir schwer, zum Kern von Node.js zu gelangen, da die meisten Leute nur über den Teil von Node schreiben / sprechen, den sie nützlich finden - und der Teil, den sie interessant finden, ist normalerweise eher ein sekundärer Vorteil von Node als dessen primärer Zweck. Ich muss sagen, dass ich es für verrückt halte, wenn Leute sagen, dass Node nur eine JavaScript-Laufzeit ist. Die Verwendung von JavaScript durch Node - und die Auswahl der V8-Laufzeit - sind einfach Mittel zum Zweck , die besten Tools für das Problem, das die Entwickler von Node lösen wollten.
Der Hauptzweck von Node bestand darin, die Verwaltung von Benutzerereignissen in einer Web-App effizienter zu gestalten. Node ist also überwältigendwird am Backend einer Web-App verwendet. Die Ereignisverwaltung erfordert, dass auf dem Server etwas 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 diejenigen, die dies tun, verfügen möglicherweise nicht über einen so effizienten Interpreter wie die V8-Laufzeit von Google. Die meisten Webentwickler kennen JavaScript, sodass mit Node kein zusätzliches Sprachenlernen möglich ist. Darüber hinaus können mit Rückruffunktionen alle Benutzeraufgaben in einem einzigen Thread zusammengefasst werden, ohne dass Aufgaben, die den Zugriff auf die Datenbank oder das Dateisystem erfordern, explizit blockiert werden.
Um Node-Benutzern das schnelle Schreiben von Back-End-Code zu erleichtern, haben die Entwickler von Node auch das NPM-Repository (Node Package Manager) organisiert: Dies ist ein benutzerfreundlicher 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 festgelegten Befehl npm install .
Benutzeranforderungen, die über den Knoten verarbeitet werden, sind beispielsweise die Validierung von Registern / Anmelden / Abmelden / Formularfeldern, und verschiedene Datenbankabfragen, die von der Web-App benötigt werden, werden an den Knotenport gesendet. Andere Arten von Benutzeranfragen, z. B. zum Anzeigen einer anderen Webseite, zum Herunterladen von CSS / JS / Bildern usw., können ebenfalls an Node gesendet werden. Diese werden jedoch normalerweise nicht an den Knotenport gesendet, sondern vom Browser weiterhin an die Standardports auf dem Server, auf denen der Webserver sie verarbeitet.
Also, in der Praxis , Knoten ist normalerweise ein Server , sondern eine , die nur ersetzt einige der Funktionen des Web - Server - Programms. Andere Anwendungen von Node nutzen einfach die eine oder andere seiner Funktionen, z. B. die V8-Engine. Aber dies sind wirklich nur Nebenproduktverwendungen von Node.
quelle
Der Webserver dient seinen Clients über Protokolle über das Internet, und Web Framework wird als Compiler bezeichnet. Es besteht aus allen erforderlichen Bibliotheken, Syntaxregeln usw.
Und node.js ist ein Framework !!
quelle
Ich denke, das Problem ist, dass die Terminologie von "Webserver" oder "Webanwendungsserver" von der JEE-Welt und Produkten dominiert wird, die nicht so modularisiert sind wie die heutige Javascript-Framework-Welt, 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 und Feathers als Backend - Sie haben ein Backend, das eine REST-API und eine serverseitig gerenderte Benutzeroberfläche bereitstellt!
Natürlich könnten Sie das (falsch) verwenden, um statische Inhalte bereitzustellen - dann würde ich es als Webserver bezeichnen, oder Sie könnten es verwenden, um eine vollständige Anwendung zu erstellen und bereitzustellen - dann würde ich es als Webanwendungsserver bezeichnen.
Es sind die kombinierten Merkmale oder Eigenschaften, die zusammenfassen, um einen Zweck zu erfüllen - richtig? - Funktionen wie Stabilität, Skalierbarkeit und dergleichen werden meiner Meinung nach im Laufe der Zeit zu diesen Technologien hinzugefügt. Im Moment sind sie noch ziemlich neu.
quelle
Nein, es ist eine Laufzeitumgebung. Es handelt sich also nicht um einen Webserver, für dessen Ausführung ist noch keiner erforderlich. Wahrscheinlich ist dies der Grund, warum es verwirrend sein könnte. Es kann eigenständig ausgeführt werden, ohne dass ein Webserver erforderlich ist, da es selbst eine Laufzeit ist, aber auch hier kein Webserver.
quelle