0
有三個模塊:a.js,b.js,c.js
,a.js
是導出數據庫連接,b.js,c.js
是導入連接,就像在兩個不同的http路由中一樣,所以連接模塊(a .js文件)將被導入兩次,這是否意味着驅動程序將連接到數據庫兩次?我與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只運行一次,所以爲什麼呢?希望你的幫助。
感謝,現在很明顯。 – laoqiren
其實模塊不僅緩存。模塊系統正確地實現了Singleton模式。 node.js上的所有模塊都是單例。這比單純的緩存功能強大得多,這意味着從模塊導入的所有代碼實際上都獲得了相同的對象。是的,Singleton設計模式通常用於緩存,但真正的意圖是在流程中創建單個gobal對象。 – slebetman