关于node.js / javascript文件之间的共享变量

时间:2016-04-28 08:31:26

标签: javascript node.js

我有一些需要数据库访问的文件,所以我有一个这样的文件:

...
var dynamo = new AWS.DynamoDB.DocumentClient();

module.exports.getDatabase= function(){
    return dynamo;
};
...

我想知道不同的.js文件是否像这样使用它:

var DataUtil = require('./shared/dataUtils.js');
...
var database = DataUtil.getDatabase();
....

他们是否使用相同的对象实例?或者只是使用require?

为每个.js文件实例化一个副本

1 个答案:

答案 0 :(得分:2)

是的,它是同一个实例。当您需要一个模块时,它仅在尚未加载时加载。因此,节点程序中只有一个模块实例。

来自the documentation

  

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

在您的情况下,您只有一个AWS.DynamoDB.DocumentClient实例。