相同点:
两个框架都是对http
进行了封装。相关的API
都差不多,同一批人所写。
不同点:
express
内置了许多中间件可以提供使用,而koa
没有express
包含路由,视图渲染等特性,而koa
只有http
模块。- express的中间件模型为线性,而
koa
的中间件模型为U型
,也可称为洋葱模型
的中间件。 express
通过回调函数实现异步函数,在多个回调、多个中间件写起来容易逻辑混乱。koa
通过generator
和async/await
使用同步的写法处理异步,明显好于callback
和promise
express的优缺点:
优点:线性逻辑
,通过中间件形式把业务逻辑细分、简化,一个请求进来经过一系列中间件处理后再响应给用户,清晰明了。
缺点:基于callback组合业务逻辑
,业务callback组合业务逻辑负责时嵌套过多,异常捕获困难。
koa的优缺点:
优点:
- 借助
co和generator
,很好地解决了异步流程
控制和异常捕获
问题 - Koa把Express中内置的router、view等功能都移除了,使得框架本身更
轻量
。
缺点:社区相对小
了