Module.exporting一个新实例

Con*_*ack 6 javascript commonjs node.js

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

module.exports = new Object()
Run Code Online (Sandbox Code Playgroud)

object = require('./Object')在我的整个应用程序中创建该对象的新实例,或者它是否会创建对该实例的引用?

SLa*_*aks 9

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

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

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