从概念的角度看,请求是通过中间件传播的内容,直到它到达最终的中间件(以请求类型命名:app.get,app.post)然后请求终止并且响应从最终的中间件开始。
现在是否创建了响应对象...并包含任何响应变量和视图?
请求是在应用程序入口点还是在最终的中间件处结束?
我们是否在中间件中构建响应对象或请求对象?
或者它们是否并行通过并且它确实无关紧要?
这是一个类似的问题,但我并不满意。
req.locals vs. res.locals vs. res.data vs. req.data vs. app.locals in Express middleware
答案 0 :(得分:1)
他们应该通过。它是那些没有深挖的黑魔法之物,你可能永远不会确定。
这里必不可少的是,由于它的JavaScript,req和res(req,res,next)参数实际上是对底层对象的引用。因此,如果你执行了req = null,它将只丢失引用,而不是基础对象。我认为express将引用保存在其堆栈中,然后用它们调用中间件。如果是这种情况,那么所有发生的事情都是(来自http服务器)req和res从一开始就存在。因此,如果您愿意,您可以将它们用作信息的容器。响应可能是更容易存储它们的地方。请记住,如果覆盖某些东西,你可以打破一切。 (即res.write = null
导致死亡申请。)
避免迷路的最佳方法是:a)尝试提出测试b)看看其他人是否正在做 - 如何? c)看看来源。不幸的是,Express有很多来源。这就是为什么a)是一个很好的起点。