可以保存子模块的全局命名空间的需求(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中可见。 有些人更喜欢使用全球知名度。