app.use()
的Express API文档说:
中间件功能是按顺序执行的,因此中间件包含的顺序非常重要。
然后,我在整个地方看到这样的代码:
import compression from 'compression';
import api from './api';
// some code
app.use(compression() );
// some more code
app.use(api);
api
是执行res.send()
次呼叫的路由器。
正如我所见,压缩中间件在发送respose之前已经注册。然后它如何压缩响应?在res.send()
调用之后是否有某种挂钩来注册回调?
答案 0 :(得分:1)
压缩中间件按顺序执行,但它会使res.write
res.on
和res.end
函数重载。因此,当api稍后调用它们时,它将运行压缩代码。
参考:https://github.com/expressjs/compression/blob/93586e75a0a1c5bbfd353c4cec1cfcee2e52adde/index.js#L78