To może być bardzo podstawowe pytanie, ale po prostu nie rozumiem. Jaka jest różnica między tworzeniem aplikacji za pomocą Express.js a uruchamianiem aplikacji nasłuchującej na porcie 1234, na przykład:
var express = require('express');
var app = express();
//app.configure, app.use etc
app.listen(1234);
i dodanie serwera http:
var express = require('express');
var http = require('http');
var app = express();
var server = http.createServer(app);
//app.configure, app.use etc
server.listen(1234);
Co za różnica?
Jeśli przejdę do http://localhost:1234
, otrzymam to samo wyjście.
Odpowiedzi:
Drugi formularz (samodzielne tworzenie serwera HTTP zamiast tworzenia go przez Express) jest przydatny, jeśli chcesz ponownie użyć serwera HTTP, na przykład w celu uruchomienia
socket.io
w tej samej instancji serwera HTTP:app.listen()
Zwraca jednak również instancję serwera HTTP, więc przy odrobinie przepisywania możesz osiągnąć coś podobnego bez samodzielnego tworzenia serwera HTTP:źródło
===
porównanie się nie powiedzie;) Jeśli mi nie wierzysz, zawsze jest źródło .var socketio = require('socket.io')
w twoim przepisaniu jest potrzebny trzeci wiersz?app.listen()
ponieważ wymaga mniej kodu. Ponieważ jest to tylko bardzo cienka warstwaserver.listen()
i zwraca instancję serwera, generalnie nie ma powodu, aby ręcznie tworzyć osobną instancję serwera HTTP.Jest jeszcze jedna różnica w korzystaniu z aplikacji i słuchaniu serwera HTTP, gdy chcesz skonfigurować serwer https
Aby skonfigurować protokół https, potrzebujesz kodu poniżej:
Aplikacja z ekspresu zwróci tylko serwer HTTP, nie możesz ustawić go w trybie ekspresowym, więc musisz użyć polecenia serwera https
źródło
Tylko w celu punktualności i przedłużenia trochę odpowiedzi Tima.
Z oficjalnej dokumentacji :
źródło
express/lib/appplication.js
i nic więcej niż skrót do utworzenia serwera HTTP węzła.Przyszedłem z tym samym pytaniem, ale po Google znalazłem, że nie ma dużej różnicy :)
Z Github
Jeśli chcesz utworzyć zarówno serwer HTTP, jak i HTTPS, możesz to zrobić za pomocą modułów „http” i „https”, jak pokazano tutaj.
Także jeśli chcesz pracować z socket.io, zobacz ich przykład
Zobacz to
Wolę
app.listen()
:)źródło
Express to po prostu opakowanie modułu http, który został stworzony dla ułatwienia programistom w taki sposób, że ..
źródło