前端面試—Koa與Express的區別
博客說明
文章所涉及的資料來自互聯網整理和個人總結,意在于個人學習和經驗匯總,如有什么地方侵權,請聯系本人洗掉,謝謝!
介紹
Koa
- 基于node的一個web開發框架,利用co作為底層運行框架,利用Generator的特性,實作“無回呼”的異步處理;
- ES7;
- 更小、更富有表現力、更健壯的基石;
- 利用async函式、Koa丟棄回呼函式,增強錯誤處理;
- 很小的體積,因為沒有捆綁任何中間件;
- 類似堆疊的方式組織和執行;
- 低級中間件層中提供高級“語法糖”,提高了互操性、穩健性;
Express
- Node的基礎框架,基礎Connect中間件,自身封裝了路由、視圖處理等功能;
- 線性邏輯,路由和中間件完美融合,清晰明了;
- 弊端是callback回呼方式,不可組合、例外不可捕獲;
- ES5;
- connect的執行流程: connect的中間件模型是線性的,即一個一個往下執行;
區別
-
Handler的處理
Express普通回呼函式,在同一執行緒上完成當前行程的所有Http請求; Koa利用Generator Function作為回應器,co作為底層運行框架,利用Generator特性,實作“協程回應”; -
路由
Express的路由是自身集成的; Koa的需要引入中間件Koa-router; -
啟動方式
koa采用new Koa() express采用傳統的函式形式function; -
回呼
Koa沒有回呼 express有回呼; -
Http Request
koa1使用this取代Express的req、res; -
Context
Koa新增了一個Context物件,用來代替Express的Request和Response,作為請求的背景關系物件, 還有Node原生提供的req、res、socket等物件; -
生命周期
Express的生命周期不確定:express內部執行異步函式,不能確定什么時候執行完; Koa確定:koa是基于await/async,在執行下一步操作的時候,必須等待前端await執行完; -
異步流程
Express采用callback來處理異步(ES5); Koa1采用generator(ES6); Koa2采用async/await(ES7); -
錯誤處理
Express使用callback捕獲例外,深層次的例外捕獲不了; Koa使用try catch,很好的解決例外捕獲; -
中間件
koa2的中間件: 1、通過async await實作的,中間件執行的順序是“洋蔥圈”模型, 2、中間件之間通過next函式聯系,當一個中間件呼叫next()后,會將控制權交給下一個中間件,直到下一個中間件不再執行next()后,會沿路回傳,將控制權交給前一個中間件, Express中間件: 1、一個接一個順序執行,response回應寫在最后一個中間件中, 2、特點: a.app.use用來注冊中間件; b.遇到http請求,根據path和method判斷觸發哪些中間件; c.實作next機制,即上一個中間件會通過next觸發下一個中間件;
感謝
以及勤勞的自己,個人博客,GitHub
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/106296.html
標籤:其他
下一篇:前端面試—函式防抖與函式節流

