0
a.js,b.js,c.js
,a.js
はデータベース接続をエクスポートし、b.js,c.js
は2つの異なるhttpルートのように接続をインポートするため、接続モジュール.js)を2回インポートすると、ドライバがデータベースに2回接続することになりますか?私はnode.jsのモジュールと混同しています
は、私はこのように試してみました: test.js
let a = 20;
let b = 30;
console.log('I am test');
let obj = {
a,
b
}
module.exports = obj;
en.js
let obj = require('./test');
console.log('I am en.js')
module.exports = obj;
hi.js
let obj = require('./test');
let obj2 = require('./en');
console.log(obj2)
実行hi.jsと結果を:
I am test
I am en
{a:20,b:30}
en.jsとhi.jsは両方ともtest.jsをインポートします。結果から、test.jsは1回だけ実行されるようです。その理由は何ですか?あなたの助けを願います。
感謝を読むことができます。 – laoqiren
実際には、モジュールは単にキャッシュされるだけではありません。モジュールシステムは、シングルトンパターンを適切に実装します。 node.jsのすべてのモジュールはシングルトンです。これは単なるキャッシングよりもはるかに強力です。つまり、モジュールからインポートするすべてのコードが実際に同じオブジェクトを取得することを意味します。はい、シングルトンのデザインパターンはしばしばキャッシュに使用されますが、実際の目的はプロセス内に単一のゴブリングオブジェクトを作成することです。 – slebetman