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

模块在node.js中初始化并在请求之间保持其状态,node.js,module,initialization,Node.js,Module,Initialization,我的场景:我将上传一些少量的配置数据,也很少更改数据库中的数据,比如说exports.config,我想使用这些数据来代替配置文件,以便app admin(不是sysadmin:)可以通过web界面配置应用程序,我想确保在每次使用该模块时,不会重新加载该数据 我是否正确地假设node.js模块中的[初始化]代码(函数定义之外)在每个进程生命周期中只执行一次,而不管我需要多少次这个模块 这可能是个愚蠢的问题,但我正在努力理解node.js的一些功能。是的。 每个进程生命周期可能需要多次文件/模块,

我的场景:我将上传一些少量的配置数据,也很少更改数据库中的数据,比如说
exports.config
,我想使用这些数据来代替配置文件,以便app admin(不是sysadmin:)可以通过web界面配置应用程序,我想确保在每次使用该模块时,不会重新加载该数据

我是否正确地假设node.js模块中的[初始化]代码(函数定义之外)在每个进程生命周期中只执行一次,而不管我需要多少次这个模块

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

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

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


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

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

如果您想让一个模块多次执行代码,那么请导出一个函数并调用该函数


非常感谢链接,我显然错过了它,但我在那里读到的是我的假设是正确的-模块代码将只执行一次。。。或者你是说“是的”?还是我遗漏了什么?抱歉…@esp,我的错,我把你的问题理解为“每个请求”,而不是“每个进程生命周期”