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