有三个模块:a.js,b.js,c.js
,a.js
用于导出数据库连接,b.js,c.js
用于导入连接,就像在两个不同的http路由中一样,因此连接模块( a.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只运行一次,为什么呢?希望你的帮助。
答案 0 :(得分:0)
模块在第一次加载后进行缓存。这意味着(除其他外)每次调用require(' foo')将获得完全相同的返回对象,如果它将解析为同一文件。
您可以在这里阅读更多内容