Koa v2.x 中文文档 Koa 对比 Express

Koa 与 Express

此系列文章的应用示例已发布于 GitHub: koa-docs-Zh-CN. 能够 Fork 帮助改进或 Star 关注更新. 欢迎 Star.node

在理念上,Koa 旨在 “修复和替换节点”,而 Express 旨在 “增长节点”。
Koa 使用承诺和异步功能来摆脱回调地狱的应用程序,并简化错误处理。
它暴露了本身的 ctx.requestctx.response 对象,而不是 node 的 reqres 对象。git

另外一方面,Express 经过附加的属性和方法增长了 node 的 reqres 对象,而且包含许多其余 “框架” 功能,如路由和模板,而 Koa 则没有。github

所以,Koa 可被视为 node.js 的 http 模块的抽象,其中 Express 是 node.js 的应用程序框架。安全

功能 Koa Express Connect
Middleware Kernel
Routing - -
Templating - -
Sending Files - -
JSONP - -

所以,若是您想要更接近 node.js 和传统的 node.js 样式编码,那么您可能但愿坚持使用Connect/Express 或相似的框架。
若是你想摆脱回调,请使用 Koa。cookie

因为这种不一样的理念,其结果是传统的 node.js “中间件”(即“(req,res,next)”的函数)与Koa不兼容。 你的应用基本上要从新改写了。框架

Koa 替代 Express?

它更像是 Connect,可是不少 Express 的好东西被转移到 Koa 的中间件级别,以帮助造成更强大的基础。 这使得中间件对于整个堆栈而言不单单是最终应用程序代码,并且更易于书写,并更不容易出错。koa

一般,许多中间件将从新实现相似的功能,甚至更糟的是不正确地实现它们, 如签名的cookie 加密等一般是应用程序特定的,而不是中间件特定的。异步

Koa 替代 Connect?

不,只是不一样的功能,如今经过构建器也可让咱们用较少的回调编写代码。 Connect 一样能够,有些人可能仍然喜欢它,这取决于你喜欢什么。模块化

为何 Koa 不是 Express 4.0?

Koa 与如今所知的 Express 差距很大,设计根本上有很大差别,因此从 Express 3.0 迁移到Express 4.0 将有意味着重写整个应用程序,因此咱们考虑建立一个新的库。函数

Koa 与 Connect/Express 有哪些不一样?

基于 Promises 的控制流程

没有回调地狱。

经过 try/catch 更好的处理错误。

无需域。

Koa 很是精简

不一样于 Connect 和 Express, Koa 不含任何中间件.

不一样于 Express, 不提供路由.

不一样于 Express, 不提供许多便捷设施。 例如,发送文件.

Koa 更加模块化.

Koa 对中间件的依赖较少

例如, 不使用 “body parsing” 中间件,而是使用 body 解析函数。

Koa 抽象 node 的 request/response

减小攻击。

更好的用户体验。

恰当的流处理。

Koa 路由(第三方库支持)

因为 Express 带有本身的路由,而 Koa 没有任何内置路由,可是有 koa-router 和 koa-route 第三方库可用。一样的, 就像咱们在 Express 中有 helmet 保证安全, 对于 koa 咱们有 koa-helmet 和一些列的第三方库可用。

若是这篇文章对您有帮助, 感谢 下方点赞 或 Star GitHub: koa-docs-Zh-CN 支持, 谢谢.

相关文章
相关标签/搜索