koa中介軟體原理 之 手寫koa

2021-10-11 22:50:36 字數 2490 閱讀 3860

早期沒有koaexpess之前,所有的請求響應只能在http.createserver中完成

)//返回請求狀態碼

res.

end(

"返回根目錄頁面給瀏覽器")}

else

if(req.url ==

"/about"))

; res.

end(

"返回/about目錄頁面給瀏覽器")}

})server.

listen

(3000,(

)=>

)

const koa =

require

('koa'

)new

koa(

)// 建立koa服務, koa內部是封裝http實現的

use(

async

(ctx, next)

=>

)use

(async

(ctx, next)

=>

)listen

(3000

)// 監聽服務

//執行結果: 1, 2, 3, 4

上面的意思是:瀏覽器訪問乙個請求過來會經過1, 2, 3, 4這4個地方的不同處理,從而返回乙個最終的資料給瀏覽器。koa與http相比 意義在於更分層次,更有邏輯性的處理了瀏覽器的請求koa中介軟體的執行過程類似乙個切洋蔥的過程,洋蔥上一半由外到內一層一層切開(執行),下一半由內到外一層一層切開(執行), 所以我們稱koa中介軟體模型為 「洋蔥模型」。

我們知道koa是利用洋蔥模型原理通過封裝http實現的,下面我們也來實現乙個koa吧!

koa//當執行 koa.listen(3000) 方法時建立乙個 http 服務

listen

(...args)

) server.

listen

(...args)

}use

(middleware)

createcontext

(req, res)

,get

body()

,set

body

(val)

,get

method()

})ctx.request = object.

create(,

getmethod()

})ctx.response = object.

create(,

setbody

(val)})

ctx.req = ctx.request.req = req

ctx.res = ctx.response.res = res

return ctx

}//洋蔥模型核心原理

compose

(middlewares)

// dispatch 方法返回 promise 的原因是確保洋蔥模型存在非同步情況下可以使用 await語法 讓洋蔥模型依然按照順序執行

return promise.

resolve(fn

(ctx,

function

next()

))}}

}}//下面我們使用自己實現的 koa

newkoa()

// 建立koa服務, koa內部是封裝http實現的

use(

async

(ctx, next)

=>);

use(

async

(ctx, next)

=>);

function

delay()

,2000)}

)}listen

(3000,(

)=>

)執行結果如下:

koa 中介軟體

什麼是中介軟體 中介軟體是匹配路由之前或匹配路由完成做的一系列操作 中介軟體是乙個函式,它可以訪問請求物件和響應物件,和web應用中處理請求 響應迴圈流程 變數next,呼叫它,將控制權交給下乙個中介軟體函式 中介軟體的功能 koa中的幾種中介軟體 應用級中介軟體 路由級中介軟體 錯誤處理中介軟體 ...

koa 中介軟體

什麼是 koa 的中介軟體 通俗的講 中介軟體就是匹配路由之前或者匹配路由完成做的一系列的操作,我們就可以 把它叫做中介軟體。在express中介軟體 middleware 是乙個函式,它可以訪問請求物件 requestobject req 響應物件 responseobject res 和 web...

koa 中介軟體

中介軟體就是匹配路由之前或者匹配路由完成做的一系列的操作,我們就可以把它叫做中介軟體。在express 中介軟體 middleware 是乙個函式,它可以訪問請求物件 request object req 響應物件 response object res 和web 應用中處理請求 響應迴圈流程中的中...