前端面試—Koa與Express的區別

前端面試—Koa與Express的區別

<!-- more -->前端

博客說明node

文章所涉及的資料來自互聯網整理和我的總結,意在於我的學習和經驗彙總,若有什麼地方侵權,請聯繫本人刪除,謝謝!

介紹

Koa
  • 基於node的一個web開發框架,利用co做爲底層運行框架,利用Generator的特性,實現「無回調」的異步處理;
  • ES7;
  • 更小、更富有表現力、更健壯的基石;
  • 利用async函數、Koa丟棄回調函數,加強錯誤處理;
  • 很小的體積,由於沒有捆綁任何中間件;
  • 相似堆棧的方式組織和執行;
  • 低級中間件層中提供高級「語法糖」,提升了互操性、穩健性;
Express
  • Node的基礎框架,基礎Connect中間件,自身封裝了路由、視圖處理等功能;
  • 線性邏輯,路由和中間件完美融合,清晰明瞭;
  • 弊端是callback回調方式,不可組合、異常不可捕獲;
  • ES5;
  • connect的執行流程: connect的中間件模型是線性的,即一個一個往下執行;

區別

  • 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

微信公衆號

相關文章
相關標籤/搜索