可以保存子模块的全局命名空间的需求(fs / http / etc)?

app.js

 global.fs = require('fs'); require('./process.js').init(); 

process.js

 // Do stuff with `fs` fs.realpathSync(...); // etc. 

global下保存fs是否可以接受,以便process.js中的代码可以访问fs而不必重新使用它?

还是有其他的方式我应该这样做?

我相信,一般分配的图书馆一般都不能使用全局variables。 问题是,除非用户确切地知道库所使用的全局variables,否则它们可能被覆盖(有意或无意)并导致应用程序或库的意外行为。

在你的具体例子中,“process.js”应该可以再次要求模块。 由于node.js中模块的caching行为,再次调用“require”的开销是微不足道的,并且保证得到完全相同的对象,而不是使用全局variables固有的风险。

这是类似的问题node.js需要inheritance? 我想你可以跳过全球,只是做:

 fs = require('fs'); // in app.js 

FS将自动附加到全局,并将在process.js中可见。 有些人更喜欢使用全球知名度。