Koajs中間件之定義(一)

Koajs中間件之定義(一)
Koajs中間件之next(二)
Koajs中間件之context(三)

Koa 做爲一個簡單、易學、好用的的 Web 框架,只有區區幾百行代碼,被人津津樂道的就是其精妙的設計了。一直都在項目中使用Koajs,但其實不多認真的看過其中的源碼,中間件做爲 Koa 框架的精髓,若是明白了其中的原理基本上對 Koa 有了一半的瞭解。javascript

什麼是 Koa 中間件

Koa 官方並未對中間件有一個具體的定義,嘗試給個定義:「在Koa中,中間件是指連貫整個 Koa 應用程序,並共享資源(上下文)的獨立插件。」java

示例簡析

const Koa = require('koa');
const app = new Koa();

const middleware1 = (context, next) => {
    console.log('middleware1 >>>>>');
    next();
    console.log('middleware1 <<<<<');
}
const middleware2 = (context, next) => {
    console.log('middleware2 >>>>>');
    next();
    console.log('middleware2 <<<<<');
}

const middleware3 = (context, next) => {
    console.log('middleware3 >>>>>');
    next();
    console.log('middleware3 <<<<<');
}

app.use(middleware1);
app.use(middleware2);
app.use(middleware3);

app.listen(3000);

輸出結果segmentfault

middleware1 >>>>>
middleware2 >>>>>
middleware3 >>>>>
middleware3 <<<<<
middleware2 <<<<<
middleware1 <<<<<

標準的堆棧(先進後出)模型,Koa 官方稱爲洋蔥模型,也有人稱爲回形針模型,能夠用下面的圖來形容bash

clipboard.png

next、context

上面定義中咱們講過,「在Koa中,中間件是指連貫整個 Koa 應用程序,並共享資源的獨立插件」,注意兩個詞,「連貫」與「共享資源」,與上面的代碼一一對應,「連貫」對應「next」,「共享資源對應context」。app

參考資料

Mdn 類
Koa 官網框架

相關文章
相關標籤/搜索