使用require函数传递数据

时间:2016-12-01 23:06:30

标签: node.js commonjs

在Node.js(CommonJS模块系统)中我们有

AppointmentFilter

有没有办法将数据传递给模块,如:

list

我希望能够在加载后立即在模块中设置一个值,而且我无法控制foo&f 39的结构; - 它可以导出一个函数,或者整个模块可能只是运行完成。

用例实际上很常见:

我有一个像这样的模块:

// foo.js

require('foo');

不幸的是,TMK,我必须设置一个全局变量来指示x的值,这总是很糟糕。

1 个答案:

答案 0 :(得分:2)

自2009年以来,我一直在关注node.js,希望这已经足够长了。 ;)

一般来说,您要求的方式可能不是您所要求的。我已经看到了四种常见的配置模块模式,如您所述。

1)导出一个函数,将params传递给配置其选项的函数。这是迄今为止最常见的方法。

2)使用静态(函数或属性)。如果您将模块视为Singleton,这是最常见的,并且选项是您要应用于模块的所有实例的选项。但由于全球状态,大多数人都不愿采用这种方法。

3)环境变量。这是另一种非常常见的方式,由12factor.net推荐。它对于应用级变量最常见,对于内部模块则较少。

4)配置模块。在这种情况下,人们使用类似convict和其他的东西来整合来自其他文件(基于环境)和命令行参数和环境变量的配置。需要配置的模块只需要它并询问他们关心的变量。