Dies mag eine sehr grundlegende Frage sein, aber ich verstehe sie einfach nicht. Was ist der Unterschied zwischen dem Erstellen einer App mit Express.js und dem Starten der App, die Port 1234 überwacht ? Beispiel:
var express = require('express');
var app = express();
//app.configure, app.use etc
app.listen(1234);
und Hinzufügen eines http-Servers:
var express = require('express');
var http = require('http');
var app = express();
var server = http.createServer(app);
//app.configure, app.use etc
server.listen(1234);
Was ist der Unterschied?
Wenn ich zu navigiere http://localhost:1234
, erhalte ich die gleiche Ausgabe.
Antworten:
Das zweite Formular (Erstellen eines HTTP-Servers selbst, anstatt dass Express einen für Sie erstellt) ist nützlich, wenn Sie den HTTP-Server wiederverwenden möchten, z. B. um ihn
socket.io
in derselben HTTP-Serverinstanz auszuführen :Gibt jedoch
app.listen()
auch die HTTP-Serverinstanz zurück, sodass Sie mit ein wenig Umschreiben etwas Ähnliches erreichen können, ohne selbst einen HTTP-Server zu erstellen:quelle
===
Vergleich fehlschlagen;) Wenn du mir nicht glaubst, gibt es immer die Quelle .var socketio = require('socket.io')
in der dritten Zeile in Ihrem Umschreiben notwendig?app.listen()
weil es weniger Code erfordert. Da es sich nur um eine sehr dünne Schichtserver.listen()
handelt und die Serverinstanz zurückgegeben wird, gibt es im Allgemeinen keinen Grund, manuell eine separate HTTP-Serverinstanz zu erstellen.Es gibt noch einen weiteren Unterschied zwischen der Verwendung der App und dem Abhören des http-Servers, wenn Sie den https-Server einrichten möchten
Zum Einrichten von https benötigen Sie den folgenden Code:
Die App von Express gibt nur den http-Server zurück. Sie können sie nicht in Express festlegen. Daher müssen Sie den Befehl https server verwenden
quelle
Nur aus Pünktlichkeitsgründen und ein bisschen verlängern Tim Antwort.
Aus der offiziellen Dokumentation :
quelle
express/lib/appplication.js
und nichts weiter als eine Verknüpfung zum Erstellen des http-Servers des Knotens enthalten ist.Ich kam mit der gleichen Frage, aber nach Google stellte ich fest, dass es keinen großen Unterschied gibt :)
Von Github
Wenn Sie sowohl einen HTTP- als auch einen HTTPS-Server erstellen möchten, können Sie dies mit den hier gezeigten Modulen "http" und "https" tun.
Auch wenn Sie mit socket.io arbeiten möchten, sehen Sie sich das Beispiel an
Sehen Sie das
Ich bevorzuge
app.listen()
:)quelle
Express ist im Grunde ein Wrapper des http-Moduls, der für die Entwickler so erstellt wurde, dass ..
quelle