私はnode.jsを学んでいて、次の2つのケースに違いがあることに興味があります。IEmyvar
多くのモジュールやサブモジュールに渡す必要のある変数 (db 接続や定数文字列 "test" など) があります。
最初のケース。その変数をパラメーターとして受け入れるモジュールを作成します。
サブモジュール.js:
var option
, submodule = {};
submodule.func = function(){
...
var something = option;
...
}
module.exports = function(opts){
option = opts;
return submodule;
}
module1.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;
module1.js:
var submodule = require('./submodule');
function func(option){
...
submodule.func(option);
...
var something = option;
...
};
exports.func = func;
質問は次のとおりです。この 2 つのケースに違いはありますか、それとも同じですか?