6

如果我module.exports像这样将对象附加到节点中的对象:

module.exports = new Object()

我的应用程序中的每个object = require('./Object')都会创建该对象的新实例,还是会创建对一个实例的引用?

4

2 回答 2

9

require()缓存它执行的文件。

第一次运行时require('./Object'),它将运行您的代码并将导出的对象放入require.cache.
后续调用将立即返回缓存的对象。

您可以自己从缓存中删除模块,或者使用 getter,但这些都是坏主意。

于 2013-09-09T00:23:14.107 回答
1

查看节点文档中的缓存警告。只要解析的模块路径匹配,您就会得到相同的对象。此答案中有一个示例,说明何时解析的路径不匹配。

于 2013-09-09T00:29:32.343 回答