从node.js文档:
模块在第一次加载后进行缓存.这意味着(除其他外)每次调用require('foo')将获得完全相同的返回对象,如果它将解析为同一个文件.
有没有办法使这个缓存无效?即对于单元测试,我希望每个测试都能处理一个新的对象.
我有一个关于模块缓存的node.js文档的问题:
模块在第一次加载后进行缓存.这意味着(除其他外)每次调用require('foo')将获得 完全相同的返回对象,如果它将解析为同一个文件.
多次调用require('foo')可能不会导致模块代码多次执行.这是一个重要的特征.有了它,就可以返回"部分完成"的对象,从而允许加载传递依赖,即使它们会导致循环.
是什么意思may?
我想知道require是否总是返回相同的对象.所以,如果我需要一个模块一个中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');
Run Code Online (Sandbox Code Playgroud) node.js ×2