Koa和Express本系列文章的应用示例已经发布在GitHub上:koa-docs-Zh-CN。您可以Fork以帮助改进或Star以关注更新。欢迎来到星空。从概念上讲,Koa旨在“修复和替换节点”,而Express旨在“扩充节点”。Koa使用promises和asyncfunctions使应用程序摆脱回调地狱并简化错误处理。它公开了自己的ctx.request和ctx.response对象,而不是节点的req和res对象。另一方面,Express使用额外的属性和方法来扩充节点的req和res对象,并包括许多其他“框架”功能,例如路由和模板,这是Koa没有的。因此,Koa可以看作是node.js的http模块的抽象,其中Express是node.js的应用框架。功能KoaExpressConnectMiddlewareKernel???Routing-?-Templating-?-SendingFiles-?-JSONP-?-Soifyouwantsomethingclosertonode.jsandtraditionalnode.jsstylecoding那么你可能想要坚持使用Connect/Express或类似的框架。如果你想摆脱回调,使用Koa。由于这种不同的哲学,结果是传统的node.js“中间件”(即“(req,res,next)”的功能)与Koa不兼容。您的应用程序基本上被重写了。Koa而不是Express?它更像是Connect,但是很多Express的好东西被移到了Koa的中间件级别,以帮助形成更强大的基础。这使得中间件不仅是整个堆栈的最终应用程序代码,而且更易于编写且不易出错。通常很多中间件会重新实现类似的功能,或者更糟糕的是错误地实现它们,签名cookie加密等通常是应用程序特定的,而不是中间件特定的。Koa而不是Connect?不,只是不同的功能,现在还通过构建器允许我们编写具有更少回调的代码。Connect也同样有效,有些人可能仍然喜欢它,这取决于您喜欢什么。为什么Koa不是Express4.0?Koa与我们今天所知道的Express相去甚远,设计也有根本不同,因此从Express3.0迁移到Express4.0意味着重写整个应用程序,因此我们考虑创建一个新的库。Koa与Connect/Express有何不同?没有回调地狱的基于承诺的控制流。使用try/catch更好地处理错误。不需要域。Koa非常精简与Connect和Express不同,Koa不包含任何中间件。与Express不同,不提供路由。不像快递,不提供很多便利设施。例如,发送文件。Koa更加模块化。Koa较少依赖中间件。例如,不使用“正文解析”中间件,而是使用正文解析函数。Koa抽象节点的请求/响应以减少攻击。更好的用户体验。适当的流处理。Koa路由(第三方库支持)由于Express自带路由,Koa没有内置任何路由,但是有koa-router和koa-route第三方库可用。同样,就像我们在Express中有安全头盔一样,对于koa,我们有koa-helmet和一堆可用的第三方库。如果本文对您有帮助,请在下方点赞或StarGitHub:koa-docs-Zh-CN支持,谢谢。
