Pomimo dość dobrej znajomości JavaScript, jestem zdezorientowany, co dokładnie robią te trzy projekty w ekosystemie Node.js. Czy to coś w stylu stojaka Rails? Czy ktoś może wyjaśnić?
Pomimo dość dobrej znajomości JavaScript, jestem zdezorientowany, co dokładnie robią te trzy projekty w ekosystemie Node.js. Czy to coś w stylu stojaka Rails? Czy ktoś może wyjaśnić?
Odpowiedzi:
[ Aktualizacja: Od wersji 4.0 Express nie używa już Connect. Jednak Express jest nadal kompatybilny z oprogramowaniem pośrednim napisanym dla Connect. Moja oryginalna odpowiedź znajduje się poniżej.]
Cieszę się, że o to pytałeś, ponieważ zdecydowanie jest to powszechne zamieszanie wśród ludzi spoglądających na Node.js. Oto mój najlepszy sposób na wyjaśnienie tego:
Sam Node.js oferuje moduł http , którego createServer
metoda zwraca obiekt, którego można użyć do odpowiedzi na żądania HTTP. Ten obiekt dziedziczy http.Server
prototyp.
Connect oferuje również createServer
metodę, która zwraca obiekt, który dziedziczy rozszerzoną wersję http.Server
. Rozszerzenia Connect są głównie dostępne, aby ułatwić podłączanie oprogramowania pośredniego . Właśnie dlatego Connect określa się jako „framework oprogramowania pośredniego” i często jest analogicznie do Rack Ruby.
Express robi, aby połączyć to, co robi Connect z modułem http: Oferuje createServer
metodę, która rozszerza Server
prototyp Connect . Istnieje więc cała funkcjonalność Connect, a także renderowanie widoku i przydatny DSL do opisywania tras. Sinatra Ruby jest dobrą analogią.
Są też inne frameworki, które idą jeszcze dalej i rozszerzają Express! Na przykład Zappa , która integruje obsługę CoffeeScript, jQuery po stronie serwera i testowanie.
Oto konkretny przykład znaczenia „oprogramowania pośredniego”: Po wyjęciu z pudełka żadne z powyższych nie udostępnia plików statycznych. Ale po prostu wrzuć connect.static
(oprogramowanie pośrednie dostarczane z Connect), skonfigurowane tak, aby wskazywało na katalog, a Twój serwer zapewni dostęp do plików w tym katalogu. Należy pamiętać, że Express zapewnia również oprogramowanie pośrednie Connect; express.static
jest taki sam jak connect.static
. (Oba były znane staticProvider
do niedawna.)
Mam wrażenie, że większość „prawdziwych” aplikacji Node.js jest obecnie rozwijanych za pomocą Express; funkcje, które dodaje, są niezwykle przydatne, a wszystkie funkcje niższego poziomu są nadal dostępne, jeśli chcesz.
Przyjęta odpowiedź jest naprawdę stara (a teraz błędna). Oto informacje (ze źródłem) oparte na bieżącej wersji Connect (3.0) / Express (4.0).
http / https, createServer
który po prostu przyjmuje wywołanie zwrotne (req, res) np
var server = http.createServer(function (request, response) {
// respond
response.write('hello client!');
response.end();
});
server.listen(3000);
Oprogramowanie pośrednie to w zasadzie każde oprogramowanie, które znajduje się między kodem aplikacji a jakimś interfejsem API niskiego poziomu. Connect rozszerza wbudowaną funkcjonalność serwera HTTP i dodaje strukturę wtyczek. Wtyczki działają jako oprogramowanie pośrednie, a zatem connect jest strukturą oprogramowania pośredniego
Sposób, w jaki to robi, jest dość prosty ( a tak naprawdę kod jest naprawdę krótki! ). Jak tylko zadzwonisz var connect = require('connect'); var app = connect();
, otrzymasz funkcję, app
która może:
.use
( źródło ) do zarządzania wtyczkami ( która pochodzi stąd z tego prostego wiersza kodu ).Z powodu 1.) możesz wykonać następujące czynności:
var app = connect();
// Register with http
http.createServer(app)
.listen(3000);
Połącz z 2.), a otrzymasz:
var connect = require('connect');
// Create a connect dispatcher
var app = connect()
// register a middleware
.use(function (req, res, next) { next(); });
// Register with http
http.createServer(app)
.listen(3000);
Connect zapewnia funkcję narzędzia, w której można się zarejestrować, http
dzięki czemu nie trzeba wykonywać połączeń http.createServer(app)
. Jest wywoływany, listen
a kod po prostu tworzy nowy serwer http, rejestr łączy się jako wywołanie zwrotne i przekazuje argumenty do http.listen
. Ze źródła
app.listen = function(){
var server = http.createServer(this);
return server.listen.apply(server, arguments);
};
Możesz więc:
var connect = require('connect');
// Create a connect dispatcher and register with http
var app = connect()
.listen(3000);
console.log('server running on port 3000');
To wciąż twój stary dobry http.createServer
z ramą wtyczek na górze.
ExpressJS i connect to równoległe projekty. Connect jest po prostu strukturą oprogramowania pośredniego z przyjemną use
funkcją. Express nie zależy od Connect ( patrz package.json ). Jednak robi to wszystko, co łączy:
createServer
like connect, ponieważ jest to również funkcja, która może pobrać req
/ res
pair ( źródło ).listen
do rejestracji w httpOprócz tego, co zapewnia connect (który wyraża duplikaty), ma wiele innych funkcji. na przykład
use
Funkcją ExpressJS i Connect jest kompatybilny i dlatego middleware jest wspólna . Oba są platformami oprogramowania pośredniego, express ma tylko coś więcej niż zwykłą platformę oprogramowania pośredniego .
Moja opinia: jesteś wystarczająco poinformowany ^ na podstawie powyższego ^, aby dokonać własnego wyboru.
http.createServer
jeśli tworzysz od zera coś takiego jak connect / expressjs.http.createServer
Większość ludzi powinna po prostu korzystać z ExpressJS.
Mogłyby to być z czasem prawdziwe, ale teraz błędne:
dziedziczy rozszerzoną wersję http.Server
Źle. Nie rozszerza go i jak widzieliście ... używa go
Express robi, aby połączyć to, co robi Connect z modułem http
Express 4.0 nawet nie zależy od połączenia. zobacz aktualną sekcję zależności package.json
Node.js to silnik javascript po stronie serwera.
Oprócz wszystkich możliwości js, obejmuje on także funkcje sieciowe (takie jak HTTP) oraz dostęp do systemu plików.
Różni się to od js po stronie klienta, gdzie zadania sieciowe są zmonopolizowane przez przeglądarkę, a dostęp do systemu plików jest zabroniony ze względów bezpieczeństwa.
Coś, co działa na serwerze, rozumie HTTP i może uzyskiwać dostęp do plików, brzmi jak serwer WWW. Ale to nie jest jeden.
Aby węzeł.js zachowywał się jak serwer WWW, należy go zaprogramować: obsłużyć przychodzące żądania HTTP i podać odpowiednie odpowiedzi.
Tak robi Express: implementacja serwera WWW w js.
W związku z tym wdrożenie witryny internetowej jest jak konfigurowanie tras ekspresowych i programowanie specyficznych funkcji witryny.
Obsługa stron wiąże się z wieloma zadaniami. Wiele z tych zadań jest dobrze znanych i bardzo powszechnych, więc moduł Connect węzła (jeden z wielu modułów dostępnych do uruchomienia w węźle) implementuje te zadania.
Zobacz aktualną imponującą ofertę:
Connect to framework, dzięki któremu możesz wybrać (pod) moduły, których potrzebujesz.
Strona oprogramowania pośredniego Contrib zawiera długą listę dodatkowych programów pośrednich .
Sam Express jest wyposażony w najpopularniejsze oprogramowanie pośrednie Connect.
Zainstaluj node.js.
Węzeł jest dostarczany z npm , menedżerem pakietów węzłów .
Polecenie npm install -g express
pobierze i zainstaluje ekspresowe globalnie (sprawdź przewodnik ekspresowy ).
Uruchomienie express foo
w wierszu poleceń (nie w węźle) spowoduje utworzenie gotowej do uruchomienia aplikacji o nazwie foo. Przejdź do jego (nowo utworzonego) katalogu i uruchom go z węzłem za pomocą polecenia node <appname>
, a następnie otwórz http://localhost:3000
i zobacz. Teraz jesteś w.
Node.js
sam oferuje moduł HTTP, którego metoda createServer zwraca obiekt, którego można użyć do odpowiedzi na żądania HTTP. Ten obiekt dziedziczy http.Server
prototyp.
Powiązane informacje, szczególnie jeśli używasz NTVS do pracy z Visual Studio IDE. NTVS dodaje zarówno narzędzia NodeJS, jak i Express, rusztowania, szablony projektów do Visual Studio 2012, 2013.
Również wersja wywołująca ExpressJS lub Connect jako „WebServer” jest niepoprawna. Możesz utworzyć podstawowy serwer WWW z nimi lub bez nich. Podstawowy program NodeJS może również używać modułu http do obsługi żądań HTTP, stając się w ten sposób podstawowym serwerem WWW.
oprogramowanie pośrednie, jak sama nazwa sugeruje, oprogramowanie pośrednie znajduje się pomiędzy środkiem .. środkiem czego? środek żądania i odpowiedzi .. jak żądanie, odpowiedź, serwer ekspresowy siedzą w ekspresowej aplikacji na tym zdjęciu widać żądania przychodzące od klienta, a następnie serwer ekspresowy obsługuje te żądania .. następnie pozwala kopać głębiej .. w rzeczywistości możemy to podzielić całe zadanie serwera ekspresowego w małe oddzielne zadania jak w ten sposób. jak oprogramowanie pośredniczące znajduje się pomiędzy żądaniem a odpowiedzią mała część części serwera wykonująca określone zadanie i przekazała zapytanie do następnej .. w końcu wykonując wszystkie zadania odpowiedź została wykonana .. całe oprogramowanie pośrednie może uzyskać dostęp do obiektu żądania, obiektu odpowiedzi i następnej funkcji żądania cykl odpowiedzi ..
to dobry przykład na wyjaśnienie oprogramowania pośredniego w ekspresowym wideo youtube dla oprogramowania pośredniego