<!-- 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