Module.exporting一个新实例

时间:2013-09-09 00:21:38

标签: javascript node.js commonjs

如果我将一个对象附加到节点中的module.exports对象,如下所示:

module.exports = new Object()

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

2 个答案:

答案 0 :(得分:9)

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

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

您可以自己从缓存中删除模块,或使用getter,但这些都是不好的想法。

答案 1 :(得分:1)

在节点文档中查看caching caveats。只要已解析的模块路径匹配,您将获得相同的对象。 this answer中有一个解析路径不匹配的例子。