我有关于the node.js documentation on module caching一个问题:了解Node.js模块:多个需要返回相同的对象?
模块是他们第一次加载后缓存。这意味着 (其中包括)每次调用require('foo')将返回 完全相同的对象(如果它将解析为相同的 文件)。
多次调用require('foo')可能不会导致模块代码为 多次执行。这是一个重要的功能。通过它,可以返回 “部分完成”的对象,从而允许即使在它们会导致循环时也加载依附关系。
什么意思是may
?
我想知道是否需要总是返回相同的对象。所以,如果我需要一个模块在app.js
一个,改变内app.js
出口对象(需要回报的),之后需要一个模块乙在app.js
本身需要模块一个,将我总是获取该对象的修改版本,还是新的?
// app.js
var a = require('./a');
a.b = 2;
console.log(a.b); //2
var b = require('./b');
console.log(b.b); //2
// a.js
exports.a = 1;
// b.js
module.exports = require('./a');
在文档中的这句话本来可以写得更好。在我看来,*可能不*与*不允许*相同,即多次调用require('foo')**不能**导致模块代码被多次执行*。 – 2014-07-23 02:38:23