Koa如何帮助避免“猴子修补”,以及“ Hapi”或“ Express”怎么办?

时间:2018-09-15 17:37:41

标签: node.js express hapijs koa

我很难理解为什么人们鼓吹Koa解决“猴子补丁”问题(而人们却需要修改预打包的代码)。 (请参阅madvisethis)。

Koa在这方面有何特别之处? Hapi或Express在这方面有何不同?

1 个答案:

答案 0 :(得分:1)

已经完成Koa两年了,最近又有了一些express.js,我遇到了一个这样的大例子。

假设您有一个发出响应的控制器,并且您想拦截该响应并对其进行处理(例如:将其gzip压缩,或将其转换为其他格式)。

这在Koa中很容易就可以正常工作,因为您可以执行以下操作:

function myMw(ctx, next) {
   await next();
   ctx.response.body = gzip(ctx.response.body);
}

上面是一个虚构的示例,但您明白了。

通过表达您的代码,这看起来像是绝对垃圾。在快速的gzip中间件中很容易看到:

https://github.com/expressjs/compression/blob/master/index.js

这与以下事实有关:表达中间件可直接访问HTTP套接字以编写响应(使用send())。

我怀疑这是这种情绪的来源。坦白说,我不明白为什么人们仍然使用Express。我认为大部分都是习惯性的教程。 Express 很棒,但是今天很痛苦。