我对node.js中的模块感到困惑

时间:2017-05-26 03:57:52

标签: javascript node.js module commonjs

有三个模块:a.js,b.js,c.jsa.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只运行一次,为什么呢?希望你的帮助。

1 个答案:

答案 0 :(得分:0)

  

模块在第一次加载后进行缓存。这意味着(除其他外)每次调用require(' foo')将获得完全相同的返回对象,如果它将解析为同一文件。

您可以在这里阅读更多内容

https://nodejs.org/api/modules.html#modules_caching