更新時(shí)間:2023-03-09 來(lái)源:黑馬程序員 瀏覽量:
KOA2基于 Node.js 平臺(tái)的Web服務(wù)器框架, 由 Express 原班人馬打造的一個(gè)后端服務(wù)器。 Express Koa , Koa2 都是 Web 服務(wù)器的框架,他們之間的差別和關(guān)系可以通過(guò)下面這個(gè)表格表示出。
KOA2環(huán)境依賴 Node v7.6.0 及以上由于 Koa2 它是支持 async 和 await ,所以它對(duì) Node 的版本是有要求的,它要求 Node 的版本至少是在7.6級(jí)以上,因?yàn)檎Z(yǔ)法糖 async和await 是在 Node7.6 版本之后出現(xiàn)才支持。
KOA2是洋蔥模型的中間件,如下圖所示, 對(duì)于服務(wù)器而言,它其實(shí)就是來(lái)處理一個(gè)又一個(gè)的請(qǐng)求, Web 服務(wù)器接收由瀏覽器發(fā)過(guò)來(lái)的一個(gè)又一個(gè)請(qǐng)求之后,它形成一個(gè)又一個(gè)的響應(yīng)返回給瀏覽器. 而請(qǐng)求到達(dá)我們的服務(wù)器是需要經(jīng)過(guò)程序處理的,程序處理完之后才會(huì)形成響應(yīng),返回給瀏覽器,我們服務(wù)器處理請(qǐng)求的這一塊程序,在 Koa2 的世界當(dāng)中就把它稱之為中間件。
這種中間件可能還不僅僅只有一個(gè),可能會(huì)存在多個(gè),比如上圖所示, 它就存在三層中間件,這三層中間件在處理請(qǐng)求的過(guò)程以及它調(diào)用的順序?yàn)?
當(dāng)一個(gè)請(qǐng)求到達(dá)咱們的服務(wù)器,最先最先處理這個(gè)請(qǐng)求的是第一層中間件
第一層的中間件在處理這個(gè)請(qǐng)求之后,它會(huì)把這個(gè)請(qǐng)求給第二層的中間件
第二層的中間件在處理這個(gè)請(qǐng)求之后,它會(huì)把這個(gè)請(qǐng)求給第三層的中間件
第三層中間件內(nèi)部并沒(méi)有中間件了, 所以第三層中間件在處理完所有的代碼之后,這個(gè)請(qǐng)求又會(huì)到了第二層的中間件,所以第二層中間件對(duì)這個(gè)請(qǐng)求經(jīng)過(guò)了兩次的處處理第二層的中間件在處理完這個(gè)請(qǐng)求之后,又到了第一層的中間件, 所以第一層的中間件也對(duì)這個(gè)請(qǐng)求經(jīng)過(guò)了兩次的處理。
這個(gè)調(diào)用順序就是洋蔥模型, 中間件對(duì)請(qǐng)求的處理有一種先進(jìn)后出的感覺(jué),請(qǐng)求最先到達(dá)第一層中間件,而最后也是第一層中間件對(duì)請(qǐng)求再次處理了一下。