前端面试—Koa与Express的区别
<!-- more -->
博客阐明
文章所波及的材料来自互联网整顿和集体总结,意在于集体学习和教训汇总,如有什么中央侵权,请分割自己删除,谢谢!
介绍
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