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ć?
node.js
middleware
tillda
źródło
źródło
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 dziedziczyhttp.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 rozszerzaServer
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 jakconnect.static
. (Oba były znanestaticProvider
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.
źródło
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).
Co zawiera Node.js
http / https,
createServer
który po prostu przyjmuje wywołanie zwrotne (req, res) npCo łączy dodaje
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:
Połącz z 2.), a otrzymasz:
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 dohttp.listen
. Ze źródłaMożesz więc:
To wciąż twój stary dobry
http.createServer
z ramą wtyczek na górze.Co dodaje ExpressJS
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
Oprogramowanie pośrednie jest udostępniane
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 .Którego powinieneś użyć?
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.
Co jest złego w zaakceptowanej odpowiedzi
Mogłyby to być z czasem prawdziwe, ale teraz błędne:
Źle. Nie rozszerza go i jak widzieliście ... używa go
Express 4.0 nawet nie zależy od połączenia. zobacz aktualną sekcję zależności package.json
źródło
node.js
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.
node.js jako serwer WWW: express
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.
Oprogramowanie pośrednie i połączenie
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.
Co robić?
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ą polecenianode <appname>
, a następnie otwórzhttp://localhost:3000
i zobacz. Teraz jesteś w.źródło
Connect oferuje interfejsy API „wyższego poziomu” do typowych funkcji serwera HTTP, takich jak zarządzanie sesjami, uwierzytelnianie, rejestrowanie i inne. Express jest zbudowany na Connect z zaawansowaną funkcjonalnością (podobną do Sinatry).
źródło
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 dziedziczyhttp.Server
prototyp.źródło
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.
źródło
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
źródło
Głupia prosta odpowiedź
Connect i Express to serwery sieciowe dla nodejs. W przeciwieństwie do Apache i IIS, oba mogą używać tych samych modułów, zwanych „oprogramowaniem pośrednim”.
źródło