相同点:
两个框架都是对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等功能都移除了,使得框架本身更轻量。
缺点:社区相对小了