模块在节点中初始化.js并在请求之间保持其状态



我的场景:我将上传一些少量的配置数据,也很少从数据库中更改数据以表示exports.config,我想使用而不是配置文件,以便应用程序管理员(不是系统管理员:)可以通过 Web 界面配置应用程序,我想确保每次require此模块时都不会重新加载此数据。

我是否可以假设我在 node.js 模块(函数定义之外)中拥有的任何 [初始化] 代码,无论我require这个模块多少次,它在每个进程生命周期中都只执行一次?

可能是一个愚蠢的问题,但我正在努力理解node.js功能的某些方面。

是的。

每个进程生存期可能需要多次文件/模块,但只会执行一次。至少默认情况下。

这对您来说效果很好,因为您只需在应用程序初始化时查询一次config表,导出的值将保持不变,直到应用程序重新启动。


来自 nodejs 模块缓存文档

模块在首次加载后缓存。这意味着(除其他事项外)如果对require('foo')的每个调用都将返回完全相同的对象,如果它将解析为相同的文件。

多次调用require('foo')可能不会导致模块代码多次执行。这是一个重要的功能。有了它,可以返回"部分完成"的对象,从而允许加载传递依赖项,即使它们会导致循环。

如果要让模块多次执行代码,请导出一个函数,然后调用该函数。

最新更新