koa2 原始碼解讀

2021-10-11 04:58:35 字數 2629 閱讀 8196

自從在簡歷上寫了使用過nodejs的koa框架起,我被面試官問起node和koa的次數呈指數**,為了防止一問三不知的情況再次發生決心去閱讀原始碼。

首先我們看下不使用koa和使用的區別

;}呼叫listen()函式,在listen函式中我們可以看到,開啟了乙個http服務並傳入了callback()函式

listen

(...args)

接下來看callback()函式,這裡使用了乙個compose()函式(這個函式很重要),那麼它是幹什麼的呢?

callback()

;return handlerequest;

}

它的主要功能是去遞迴執行middleware陣列中的中介軟體函式,並返回乙個promise,compose()函式是實現koa 洋蔥模型的關鍵.

function

compose

(middleware)

return

function

(context, next)

catch

(err)}

}}

把中介軟體函式遞迴完後,執行createcontext(),可以看到其實就是建立了乙個新的context物件並接入原型鏈建立的request,request同樣接入原型

createcontext

(req, res)

;return context;

}

通過這樣的方式返回了乙個上下文,然後回去執行return handlerequest(ctx,fn)

handlerequest

(ctx, fnmiddleware)

到此核心原始碼就差不多了。看完覺得醍醐灌頂。(當然這種狀態持續不了多久)ok這篇水文就先到這裡結束。

koa2原始碼解讀與總結

koa2的原始碼比較簡單,整個框架只要能夠很好的理解其中介軟體基本就能了解其執行和設計的原理。我建議讀koa的原始碼最好從使用的寫法開始梳理,一步一步深入其原理。一段最簡單的koa原始碼如下 const koa require koa ctx.body hello world 根據此段 可以看出,k...

Koa2原始碼學習

koa 基於 node.js 平台的下一代 web 開發框架 const koa require koa do some thing 以上 構建了乙個簡單的伺服器,你可以在瀏覽器輸入 localhost 8080 來訪問 下面我們通過建立koa伺服器,且傳送一次http請求來了解原始碼 在koa例項...

koa2原始碼解析

koa版本2.4.1 以如下示例 進行說明 const koa require koa 1.執行建構函式 2.註冊中介軟體 ctx.body hello world 3.啟動指定埠的http服務 複製 1.建構函式constructor 複製 2.註冊中介軟體use fn 複製 3.啟動指定埠的ht...