在Node.js(CommonJS模块系统)中我们有
AppointmentFilter
有没有办法将数据传递给模块,如:
list
我希望能够在加载后立即在模块中设置一个值,而且我无法控制foo&f 39的结构; - 它可以导出一个函数,或者整个模块可能只是运行完成。
用例实际上很常见:
我有一个像这样的模块:
// foo.js
require('foo');
不幸的是,TMK,我必须设置一个全局变量来指示x的值,这总是很糟糕。
答案 0 :(得分:2)
自2009年以来,我一直在关注node.js,希望这已经足够长了。 ;)
一般来说,您要求的方式可能不是您所要求的。我已经看到了四种常见的配置模块模式,如您所述。
1)导出一个函数,将params传递给配置其选项的函数。这是迄今为止最常见的方法。
2)使用静态(函数或属性)。如果您将模块视为Singleton,这是最常见的,并且选项是您要应用于模块的所有实例的选项。但由于全球状态,大多数人都不愿采用这种方法。
3)环境变量。这是另一种非常常见的方式,由12factor.net推荐。它对于应用级变量最常见,对于内部模块则较少。
4)配置模块。在这种情况下,人们使用类似convict
和其他的东西来整合来自其他文件(基于环境)和命令行参数和环境变量的配置。需要配置的模块只需要它并询问他们关心的变量。