19

Koa 和 Express 4.0 都是相当新的,据我所知,Koa 是由 Express 团队制作的。

据我了解,Koa 需要的节点功能仅在节点的 0.11(不稳定分支)中可用,并且还使用生成器。Express 4.0 似乎只是 Express 框架的下一个版本。

有什么我完全遗漏的区别吗?Koa 和 Express 是否有可能(根据 Express 团队的公开声明)在未来的某个时候合并?

谢谢!

4

2 回答 2

34

在发布开放式问题之前,搜索引擎应该是您的首选。

来自 Koa 文档

Koa 与 Express

从哲学上讲,Koa 旨在“修复和替换节点”,而 Express 旨在“增强节点”。Koa 使用 co 来摆脱应用程序的回调地狱并简化错误处理。它公开了自己的 this.request 和 this.response 对象,而不是节点的 req 和 res 对象。

另一方面,Express 为节点的 req 和 res 对象增加了额外的属性和方法,并包含了许多其他的“框架”特性,例如路由和模板,而 Koa 没有。

因此,Koa 可以被视为 node.js 的 http 模块的抽象,而 Express 是 node.js 的应用程序框架。

...

Koa 会取代 Express 吗?

它更像是 Connect,但是很多 Express 的好东西都被移到了 Koa 的中间件级别,以帮助形成更强大的基础。这使得中间件更有趣,更不容易编写,适用于整个堆栈,而不仅仅是最终应用程序代码。

通常,许多中间件会重新实现类似的功能,或者更糟糕的是,当签名 cookie 机密等功能通常是特定于应用程序而不是特定于中间件时,它们会错误地实现它们。

...

为什么 Koa 不只是 Express 4.0?

Koa 与人们对 Express 的了解有很大的不同,设计从根本上是不同的,所以从 Express 3.0 迁移到这个 Express 4.0 将实际上意味着重写整个应用程序,所以我们认为创建一个新的应用程序会更合适图书馆。

于 2014-04-17T20:37:57.413 回答
7
  • Koa 不提供路由、模板、发送文件和 JSONP 等功能,而 express 提供。
  • koa 公开了它自己的 ctx.request 和 ctx.response 对象,而不是节点的 req 和 res 对象,即 (req, res, next) 形式的函数,与 Koa 不兼容。
  • Koa 可以看作是 node.js 的 http 模块的抽象,而 Express 是 node.js 的应用程序框架。

有关更详细的答案,您可以访问此链接上的官方文档: https ://github.com/koajs/koa/blob/master/docs/koa-vs-express.md

于 2018-06-26T09:02:08.460 回答