Koa.js - kaskadowanie
Funkcje oprogramowania pośredniczącego to funkcje, które mają dostęp do context objectoraz kolejna funkcja oprogramowania pośredniego w cyklu żądanie-odpowiedź aplikacji. Funkcje te służą do modyfikowania obiektów żądań i odpowiedzi dla zadań, takich jak analizowanie treści żądań, dodawanie nagłówków odpowiedzi itp. Koa idzie o krok dalej, dając'downstream', a następnie przekazanie sterowania z powrotem 'upstream'. Ten efekt nazywa sięcascading.
Poniżej znajduje się prosty przykład działania funkcji oprogramowania pośredniego.
var koa = require('koa');
var app = koa();
var _ = router();
//Simple request time logger
app.use(function* (next) {
console.log("A new request received at " + Date.now());
//This function call is very important. It tells that more processing is
//required for the current request and is in the next middleware function/route handler.
yield next;
});
app.listen(3000);
Powyższe oprogramowanie pośredniczące jest wywoływane dla każdego żądania na serwerze. Dlatego po każdym żądaniu w konsoli otrzymamy następujący komunikat.
A new request received at 1467267512545
Aby ograniczyć to do określonej trasy (i wszystkich jej podtrasów), musimy po prostu utworzyć trasy, tak jak zrobiliśmy to w przypadku routingu. Właściwie to tylko te oprogramowanie pośredniczące obsługuje nasze żądanie.
Na przykład,
var koa = require('koa');
var router = require('koa-router');
var app = koa();
var _ = router();
//Simple request time logger
_.get('/request/*', function* (next) {
console.log("A new request received at " + Date.now());
yield next;
});
app.use(_.routes());
app.listen(3000);
Teraz za każdym razem, gdy zażądasz jakiejś podtrasy „/ request”, tylko wtedy zapisze czas.
Kolejność wywołań oprogramowania pośredniego
Jedną z najważniejszych rzeczy związanych z oprogramowaniem pośredniczącym w Koa jest to, że kolejność, w jakiej są zapisywane / umieszczane w pliku, to kolejność, w jakiej są wykonywane w dół. Gdy tylko trafimy na deklarację zysku w oprogramowaniu pośrednim, przełącza się ono na następne oprogramowanie pośrednie w linii, aż dotrzemy do ostatniego. Potem znowu zaczynamy cofać się i wznawiać funkcje z instrukcji yield.
Na przykład w poniższym fragmencie kodu pierwsza funkcja jest wykonywana najpierw do uzyskania zysku, następnie do drugiego oprogramowania pośredniczącego do uzyskania, a następnie do trzeciej. Ponieważ nie mamy już tutaj oprogramowania pośredniego, zaczynamy cofać się, wykonując w odwrotnej kolejności, tj. Trzeci, drugi, pierwszy. W tym przykładzie podsumowano, jak używać oprogramowania pośredniczącego na sposób Koa.
var koa = require('koa');
var app = koa();
//Order of middlewares
app.use(first);
app.use(second);
app.use(third);
function *first(next) {
console.log("I'll be logged first. ");
//Now we yield to the next middleware
yield next;
//We'll come back here at the end after all other middlewares have ended
console.log("I'll be logged last. ");
};
function *second(next) {
console.log("I'll be logged second. ");
yield next;
console.log("I'll be logged fifth. ");
};
function *third(next) {
console.log("I'll be logged third. ");
yield next;
console.log("I'll be logged fourth. ");
};
app.listen(3000);
Kiedy odwiedzimy '/' po uruchomieniu tego kodu, na naszej konsoli otrzymamy -
I'll be logged first.
I'll be logged second.
I'll be logged third.
I'll be logged fourth.
I'll be logged fifth.
I'll be logged last.
Poniższy diagram podsumowuje, co faktycznie dzieje się w powyższym przykładzie.
Teraz, gdy wiemy, jak stworzyć własne oprogramowanie pośredniczące, omówmy niektóre z najczęściej używanych programów pośredniczących tworzonych przez społeczność.
Oprogramowanie pośredniczące innych firm
Lista oprogramowania pośredniego innych firm do obsługi ekspresowej jest dostępna tutaj. Poniżej przedstawiono niektóre z najczęściej używanych programów pośredniczących -
- koa-bodyparser
- koa-router
- koa-static
- koa-compress
W kolejnych rozdziałach omówimy wiele programów pośredniczących.