我正在学习 node.js 并且感兴趣的是以下两种情况之间是否有任何区别。IE 我有一些myvar
需要在许多模块和子模块中传递的变量(如 db 连接或只是常量字符串“test”)。
第一种情况。创建接受该变量作为参数的模块:
子模块.js:
var option
, submodule = {};
submodule.func = function(){
...
var something = option;
...
}
module.exports = function(opts){
option = opts;
return submodule;
}
模块1.js:
var option
, submodule
, module1 = {};
module1.func = function(){
...
submodule.func();
...
var something = option;
...
}
module.exports = function(opts){
option = opts;
submodule = require('./submodule')(opts);
return module1;
}
在这种情况下,如果子模块用于多个具有相同myvar
值的模块(即 2 个模块),子模块的module.exports
函数将被调用 2 次。在 node.js mans 中,它说“模块在第一次加载后被缓存”。而且我不明白这个模块是否被缓存。
另一种情况:myvar
可以作为参数传递给模块函数。所以代码看起来像:
子模块.js:
function func(option){
...
var something = option;
...
};
exports.func = func;
模块1.js:
var submodule = require('./submodule');
function func(option){
...
submodule.func(option);
...
var something = option;
...
};
exports.func = func;
所以问题是:这两种情况有什么区别还是相同?