前端面试—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

微信公众号

相关文章
相关标签/搜索