Skip to content

koa 还是 express

Koa 是 Express 的轻量级版本。它是一个中间件框架,没有像 Express 那样的额外模块(比如,没有内置路由和模板引擎)。

与 Express 不同,Koa 默认情况下不包括路由模块,你需要单独引入 koa-router 包用来定义路由。

Koa 与 Express 主要区别

中间件链接方式

Express 中间件链是基于回调的,而 Koa 的则是基于 Promise 的。这就是为什么我们在 Express 中最后定义 errorMiddleware,在 Koa 中首先定义 handleError。

增强 Node vs 替换 Node

Express 是 NodeJS 的一个 Web 框架。它通过为 Node 的 req 和 res 对象添加有用的方法和属性来增强其功能。 例如,Express 会向 http req 对象添加像 req.method 和 req.headers() 这样的内容,并向 http res 对象添加 res.sendFile()。 Koa 是 NodeJS 的一个中间件框架。Koa 使用自己的上下文(ctx)替换或提取 Node 的 req 和 res 对象属性。 例如,context.body = result 可以为请求设置响应体。

更加轻量

Koa 比 Express 更轻量级。Koa 不像 Express 那样包含路由器或视图引擎模块。这些模块是单独存在的,可以很容易地被包含进来。在我们的示例中,你会注意到我们必须为 Koa 实例单独包含 koa-router,而 Express 中已经内置这个功能。 与 Express 不同的是,Koa 默认情况下不支持路由、模板引擎、发送文件、JSONP 等功能。

总结

请记住,开发 Express 和 Koa 的是同一拨开发人员。Koa 只是 Express 的一个更轻量级的版本,没有内置提供路由和模板引擎等功能。 相比于 Koa,Express 更加成熟。它的社区更为稳定,并且你可以在 Express 上找到比 Koa 更多的文档和示例。 虽然使用 Koa 可以使编写中间件更加简洁,但是使用 Express 结合 async/await 也可以避免“回调地狱”并实现类似的语法。 总之,就是 Express 和 Koa 能够实现完全一样的功能

Released under the MIT License.