gpt4 book ai didi

node.js - 在 Express 或 Connect 中添加一堆要请求的属性是不好的做法吗?

转载 作者:太空宇宙 更新时间:2023-11-03 22:01:30 25 4
gpt4 key购买 nike

例如,假设您使用 Winston 进行日志记录,而不是让每个中间件都需要记录器,您可能有一个(上游)中间件将其添加到 request 对象,以便其他中间件中间件可以做:

request.logger.log(...)

这是好还是坏做法?

最佳答案

在我看来,这样做并不是一个好的做法。

首先,您将 req 对象与您希望尚不存在并且将来也不会存在的东西混在一起。如果他们这样做了,你就会破坏东西,甚至可能没有注意到。更糟糕的是,当您今天使用的属性名称正在您使用的任何中间件的 future 版本中使用时,您就会遇到问题。当然,您不会每次对每个小更新都检查这一点。

然后,它引入了中间件模块之间的依赖关系。但这些依赖关系不是显式的,而是隐式的:只有中间件 B 在中间件 A 之后运行时才有效,但在代码中没有任何表达。如果更改顺序,最终可能只会出现一些有用的 undefined is not a function 错误。

这是我认为这是一个不好的做法的两个主要问题。当然,没有无异常(exception)的规则,但如果你要求一条经验法则,我会尽力避免这种情况。

顺便说一下,当你看一下Migrating Express 3.x to 4.x guide时,您可以阅读以下段落:

Connect patched node's prototypes globally. This is considered bad behaviour and has been removed in Connect 3.

由于 this 明确引用了 res 对象,这也完美地回答了您不应该这样做,并且这样做应该被视为不好的做法。

这基本上与我在这里写的内容相同。

希望这有帮助。

关于node.js - 在 Express 或 Connect 中添加一堆要请求的属性是不好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22594561/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com