gpt4 book ai didi

node.js - 将变量传递给所有模块

转载 作者:搜寻专家 更新时间:2023-10-31 23:49:14 25 4
gpt4 key购买 nike

我正在构建一项服务,该服务分散在必要时需要的多个模块中。我需要从我所有模块中的路由器访问“请求”变量。

我目前的解决方案(已在其他线程中建议用于一般传递变量)是将其传递给每个必需的模块:

var a_module = require('./a_module')(req);

并将每个模块导出为函数:

module.exports = function(req) { ... }

但它很冗长,涉及必须将我的模块导出为函数,并且只能在导出函数的范围内访问此变量。理想情况下,我希望能够访问整个所需模块中的变量。

是否还有其他优雅的方式来实现我所缺少的?就像在整个应用程序中将 req 变量声明为全局变量一样?

最佳答案

这个问题将征求意见而不是答案,因此它不太适合堆栈溢出,但这是我的 0.02 美元。

您需要退一步问问自己,您是否真的编写了这么多需要访问请求对象的模块。我不认为你有。你应该写的是获取他们需要的特定数据的函数——不多也不少。所有这些功能几乎肯定不需要整个请求。例如,他们中有多少人真正需要访问每个 HTTP header ?将您的程序视为对域对象/数据的一组操作。例如,也许有一个函数可以获取用户帐户记录并将其从普通用户提升为管理员。该功能所需要的只是用户帐户。它不应耦合到 HTTP 请求对象。

只需编写一堆完全解耦的函数,这些函数采用少量精确参数并用它们做一些有用的事情。这称为“松散耦合”。然后将相关功能组组织成一个模块。这就是所谓的“凝聚力”。然后使用一些“胶水”代码从 HTTP req 对象中提取必要的参数,并将它们作为参数传递给这些函数。这些相同的功能应该适用于命令行界面或其他非 HTTP 界面。如果您以这种方式对它们进行编码,而不是让每个模块的每一行都知道当前的 HTTP req 对象,它们将更容易理解、测试并且生命周期更长。

关于node.js - 将变量传递给所有模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16782440/

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