23.express和kao的区别 各自的原理 优缺点
www.mianshigee.com/question/30…
Express
优点:线性逻辑,通过中间件形式把业务逻辑细分、简化,一个请求进来经过一系列中间件处理后再响应给用户,清晰明了。 缺点:基于 callback 组合业务逻辑,业务逻辑复杂时嵌套过多,异常捕获困难。
Koa
优点:首先,借助 co 和 generator,很好地解决了异步流程控制和异常捕获问题。其次,Koa 把 Express 中内置的 router、view 等功能都移除了,使得框架本身更轻量。 缺点:社区相对较小
- express采取回调方式解决异步问题,koa采取promise方式解决异步问题
- express 内置许多中间件,koa只提供了核心代码,没有扩展其他中间件
- express中间件与koa中间件又差异
- express只能通过回调的方式处理错误,koa可以通过监听 on("error") 处理错误
- koa中请求与响应都扩展到了ctx上,express是直接对请求req与响应res进行扩展
koa和express都是同一批团队开发的,可以把koa叫做express的一个升级版本吧,express里面主要使用es5的语法,处理异步用的是回调函数,而koa则不用经历这种回调地狱,Koa1和Koa2分别采用了ES6中的Generator函数+yield语句+Promise语句和ES7中的async/await+Promise来处理异步操作。
koa比较迷你,微内核,拓展性强,因此一些web框架例如阿里的eggjs就是基于koa。而express集成了路由和static中间件因此显得重一些。
Koa 拥有更加简洁的 API,抛弃 request/response ,而使用 ctx
Koa 使用 Promise 来处理回调,能通过 try catch 捕获到程序错误;而 Express 通过 callback 回调的方式,可能无法捕获程序的运行抛出的错误。
综上,如果你想要更加简洁的 API、符合直觉的异步处理方式,我更推荐 Koa。如果,你不介意 express 对异步的处理,那它也是很不错的选择。