早期沒有koa
與expess
之前,所有的請求響應只能在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 應用中處理請求 響應迴圈流程中的中...