Obwohl ich JavaScript recht gut kenne, bin ich verwirrt, was genau diese drei Projekte in Node.js Ökosystem tun. Ist es so etwas wie Rails 'Rack? Kann mir bitte jemand erklären?
node.js
middleware
tillda
quelle
quelle
Antworten:
[ Update: Ab Version 4.0 verwendet Express Connect nicht mehr. Express ist jedoch weiterhin mit der für Connect geschriebenen Middleware kompatibel. Meine ursprüngliche Antwort ist unten.]
Ich bin froh, dass Sie danach gefragt haben, denn es ist definitiv ein häufiger Punkt der Verwirrung für Leute, die sich Node.js ansehen. Hier ist mein bester Versuch, es zu erklären:
Node.js selbst bietet ein http- Modul an, dessen
createServer
Methode ein Objekt zurückgibt, mit dem Sie auf HTTP-Anforderungen antworten können. Dieses Objekt erbt denhttp.Server
Prototyp.Connect bietet auch eine
createServer
Methode, die ein Objekt zurückgibt, das eine erweiterte Version von erbthttp.Server
. Die Erweiterungen von Connect dienen hauptsächlich dazu, das Einstecken von Middleware zu vereinfachen . Aus diesem Grund bezeichnet sich Connect als "Middleware-Framework" und wird häufig mit Ruby's Rack analogisiert.Express macht, um zu verbinden, was Connect mit dem http-Modul macht: Es bietet eine
createServer
Methode, die denServer
Prototyp von Connect erweitert . Damit stehen alle Funktionen von Connect sowie das Rendern von Ansichten und ein praktisches DSL zur Beschreibung von Routen zur Verfügung. Rubys Sinatra ist eine gute Analogie.Dann gibt es noch andere Frameworks, die noch weiter gehen und Express erweitern! Zappa zum Beispiel, das die Unterstützung für CoffeeScript, serverseitige jQuery und Tests integriert.
Hier ist ein konkretes Beispiel dafür, was unter "Middleware" zu verstehen ist: Standardmäßig werden keine der oben genannten Dateien für Sie bereitgestellt. Aber werfen Sie einfach ein
connect.static
(eine Middleware, die mit Connect geliefert wird), die so konfiguriert ist, dass sie auf ein Verzeichnis verweist, und Ihr Server bietet Zugriff auf die Dateien in diesem Verzeichnis. Beachten Sie, dass Express auch die Middleware von Connect bereitstellt.express.static
ist das gleiche wieconnect.static
. (Beide warenstaticProvider
bis vor kurzem bekannt.)Mein Eindruck ist, dass die meisten "echten" Node.js-Apps heutzutage mit Express entwickelt werden. Die hinzugefügten Funktionen sind äußerst nützlich, und alle Funktionen der unteren Ebene sind weiterhin verfügbar, wenn Sie dies wünschen.
quelle
Die akzeptierte Antwort ist wirklich alt (und jetzt falsch). Hier sind die Informationen (mit Quelle) basierend auf der aktuellen Version von Connect (3.0) / Express (4.0).
Womit Node.js kommt
http / https,
createServer
das einfach einen Rückruf entgegennimmt (req, res), zWas verbinden fügt hinzu
Middleware ist im Grunde jede Software, die sich zwischen Ihrem Anwendungscode und einer Low-Level-API befindet. Connect erweitert die integrierte HTTP-Serverfunktionalität und fügt ein Plugin-Framework hinzu. Die Plugins fungieren als Middleware und Connect ist daher ein Middleware-Framework
Die Art und Weise, wie das gemacht wird, ist ziemlich einfach ( und tatsächlich ist der Code wirklich kurz! ). Sobald Sie anrufen, erhalten
var connect = require('connect'); var app = connect();
Sie eine Funktionapp
, die:.use
( Quelle ) zum Verwalten von Plugins ( die von hier aufgrund dieser einfachen Codezeile stammt ).Aufgrund von 1.) können Sie Folgendes tun:
Kombinieren Sie mit 2.) und Sie erhalten:
Connect bietet eine Dienstprogrammfunktion, mit
http
der Sie sich registrieren können, damit Sie nicht anrufen müssenhttp.createServer(app)
. Es wird aufgerufenlisten
und der Code erstellt einfach einen neuen http-Server, registriert die Verbindung als Rückruf und leitet die Argumente an weiterhttp.listen
. Aus der QuelleSie können also Folgendes tun:
Es ist immer noch dein gutes Alter
http.createServer
mit einem Plugin-Framework an der Spitze.Was ExpressJS hinzufügt
ExpressJS und Connect sind parallele Projekte. Connect ist nur ein Middleware-Framework mit einer schönen
use
Funktion. Express hängt nicht von Connect ab ( siehe package.json ). Es macht jedoch alles, was verbindet, dh:createServer
like connect registriert werden , da es auch nur eine Funktion ist, die einreq
/res
pair ( Quelle ) annehmen kann .listen
, um sich bei http zu registrierenZusätzlich zu den Funktionen von connect (die Duplikate ausdrücken) bietet es eine Reihe weiterer Funktionen. z.B
Die Middleware wird gemeinsam genutzt
Die
use
Funktion von ExpressJS und Connect ist kompatibel und daher wird die Middleware gemeinsam genutzt . Beide sind Middleware-Frameworks, Express hat nur mehr als ein einfaches Middleware-Framework .Welches solltest du verwenden?
Meine Meinung: Sie sind ausreichend informiert, um Ihre eigene Wahl zu treffen.
http.createServer
Sie diese Option, wenn Sie etwas wie connect / expressjs von Grund auf neu erstellen.http.createServer
Die meisten Leute sollten nur ExpressJS verwenden.
Was ist falsch an der akzeptierten Antwort?
Dies mag zu einem bestimmten Zeitpunkt wahr gewesen sein, aber jetzt falsch:
Falsch. Es erweitert es nicht und wie Sie gesehen haben ... verwendet es
Express 4.0 hängt nicht einmal von der Verbindung ab. Weitere Informationen finden Sie im aktuellen Abschnitt zu den Abhängigkeiten von package.json
quelle
node.js
Node.js ist ein Javascript-Motor für die Serverseite.
Zusätzlich zu allen js-Funktionen umfasst es Netzwerkfunktionen (wie HTTP) und den Zugriff auf das Dateisystem.
Dies unterscheidet sich von clientseitigen js, bei denen die Netzwerkaufgaben vom Browser monopolisiert werden und der Zugriff auf das Dateisystem aus Sicherheitsgründen verboten ist.
node.js als Webserver: express
Etwas, das auf dem Server ausgeführt wird, HTTP versteht und auf Dateien zugreifen kann, klingt wie ein Webserver. Aber es ist keiner.
Damit sich node.js wie ein Webserver verhält, muss es programmiert werden: Behandeln Sie die eingehenden HTTP-Anforderungen und geben Sie die entsprechenden Antworten ein.
Dies ist, was Express tut: Es ist die Implementierung eines Webservers in js.
Das Implementieren einer Website entspricht dem Konfigurieren von Express-Routen und dem Programmieren der spezifischen Funktionen der Website.
Middleware und Connect
Das Bereitstellen von Seiten umfasst eine Reihe von Aufgaben. Viele dieser Aufgaben sind bekannt und sehr häufig, sodass das Connect- Modul des Knotens (eines der vielen Module, die unter dem Knoten ausgeführt werden können) diese Aufgaben implementiert.
Sehen Sie sich das aktuelle beeindruckende Angebot an:
Connect ist das Framework und über dieses können Sie die (Sub-) Module auswählen, die Sie benötigen.
Auf der Seite Contrib Middleware wird eine lange Liste zusätzlicher Middlewares aufgeführt .
Express selbst wird mit den gängigsten Connect-Middlewares geliefert.
Was ist zu tun?
Installieren Sie node.js.
Der Knoten wird mit npm , dem Knotenpaketmanager, geliefert .
Der Befehl
npm install -g express
lädt Express global herunter und installiert es (siehe Express-Anleitung ).Wenn Sie
express foo
in einer Befehlszeile (nicht im Knoten) ausgeführt werden, wird eine sofort einsatzbereite Anwendung mit dem Namen foo erstellt. Wechseln Sie in das (neu erstellte) Verzeichnis und führen Sie es mit dem Befehl mit dem Knoten aus.node <appname>
Öffnen Sie dannhttp://localhost:3000
und sehen Sie. Jetzt bist du drin.quelle
Connect bietet eine "übergeordnete" API für allgemeine HTTP-Serverfunktionen wie Sitzungsverwaltung, Authentifizierung, Protokollierung und mehr. Express basiert auf Connect mit erweiterten (Sinatra-ähnlichen) Funktionen.
quelle
Node.js
selbst bietet ein HTTP-Modul an, dessen createServer- Methode ein Objekt zurückgibt, mit dem Sie auf HTTP-Anforderungen antworten können. Dieses Objekt erbt denhttp.Server
Prototyp.quelle
Zugehörige Informationen, insbesondere wenn Sie NTVS für die Arbeit mit der Visual Studio-IDE verwenden. Das NTVS fügt Visual Studio 2012, 2013 sowohl NodeJS- als auch Express-Tools, Gerüste und Projektvorlagen hinzu.
Außerdem ist das Wort, das ExpressJS oder Connect als "WebServer" aufruft, falsch. Sie können einen einfachen WebServer mit oder ohne diese erstellen. Ein grundlegendes NodeJS-Programm kann das http-Modul auch zur Verarbeitung von http-Anforderungen verwenden und wird so zu einem rudimentären Webserver.
quelle
Middleware, wie der Name schon sagt, Middleware befindet sich zwischen Mitte .. Mitte von was? Mitte der Anfrage und Antwort. Wie Anfrage, Antwort, Express-Server in der Express-App sitzen. In diesem Bild sehen Sie, dass Anfragen vom Client kommen. Dann bedient der Express-Server-Server diese Anfragen. Dann lassen Sie uns tiefer gehen. Eigentlich können wir dies teilen Die gesamte Aufgabe des gesamten Express-Servers in kleine separate Aufgaben wie diese. Wie Middleware zwischen Anforderung und Antwort sitzt Kleiner Teil der Serverteile, die eine bestimmte Aufgabe ausführen und die Anforderung an die nächste übergeben. Schließlich wurden alle Aufgaben ausgeführt. Die Antwort wurde ausgeführt. Alle Middleware kann auf das Anforderungsobjekt, das Antwortobjekt und die nächste Funktion der Anforderung zugreifen Reaktionszyklus ..
Dies ist ein gutes Beispiel für die Erklärung von Middleware in Express- YouTube-Videos für Middleware
quelle
Die blöde einfache Antwort
Connect und Express sind Webserver für NodeJS. Im Gegensatz zu Apache und IIS können beide dieselben Module verwenden, die als "Middleware" bezeichnet werden.
quelle