<!-- more -->前端
博客說明node
文章所涉及的資料來自互聯網整理和我的總結,意在於我的學習和經驗彙總,若有什麼地方侵權,請聯繫本人刪除,謝謝!
Handler的處理git
Express普通回調函數,在同一線程上完成當前進程的全部Http請求; Koa利用Generator Function做爲響應器,co做爲底層運行框架,利用Generator特性,實現「協程響應」;
路由github
Express的路由是自身集成的; Koa的須要引入中間件Koa-router;
啓動方式web
koa採用new Koa() express採用傳統的函數形式function;
回調面試
Koa沒有回調 express有回調;
Http Requestexpress
koa1使用this取代Express的req、res;
Context微信
Koa新增了一個Context對象,用來代替Express的Request和Response,做爲請求的上下文對象。 還有Node原生提供的req、res、socket等對象;
生命週期app
Express的生命週期不肯定:express內部執行異步函數,不能肯定何時執行完; Koa肯定:koa是基於await/async,在執行下一步操做的時候,必須等待前端await執行完;
異步流程框架
Express採用callback來處理異步(ES5); Koa1採用generator(ES6); Koa2採用async/await(ES7);
錯誤處理
Express使用callback捕獲異常,深層次的異常捕獲不了; Koa使用try catch,很好的解決異常捕獲;
中間件
koa2的中間件: 一、經過async await實現的,中間件執行的順序是「洋蔥圈」模型。 二、中間件之間經過next函數聯繫,當一箇中間件調用next()後,會將控制權交給下一個中間件,直到下一個中間件再也不執行next()後,會沿路返回,將控制權交給前一箇中間件。 Express中間件: 一、一個接一個順序執行,response響應寫在最後一箇中間件中。 二、特色: a.app.use用來註冊中間件; b.遇到http請求,根據path和method判斷觸發哪些中間件; c.實現next機制,即上一個中間件會經過next觸發下一個中間件;
感謝
以及勤勞的本身, 我的博客, GitHub