是为每个需求创build一个node.js模块实例吗?
我正在尝试解决node.js
应用程序中的错误。
在一个名为mmm
的模块中,我有一个名为xxx
的局部variables(未导出),它被设置为false
。 有一个名为enableXXX()
的导出函数将variables设置为true
。 另一个模块nnn
需要mmm
并调用enableXXX()
。
其他模块需要mmm
,但是看起来对enableXXX()
的调用还没有执行。 它performance得好像xxx
仍然是false
。
这是否意味着每个需要创build一个单独的模块实例?
更新
我发现这是一个要求错误的大写字母:
// Module A var XXX = require("./myDir/xxx.js"); ... // Module B var XXX = require("./mydir/xxx.js"); ...
这是一个链接到节点文档。 您应该阅读关于caching和警告部分的部分: http : //nodejs.org/api/modules.html#modules_caching
不,不。 让我们做一个实验:
mmm.js:
var xxx = false; exports.enableXXX = function() { xxx = true; } exports.isEnabled = function() { return xxx; }
nnn.js:
require('./mmm').enableXXX();
main.js:
require('./nnn'); console.log('The result is: ' + require('./mmm').isEnabled());
现在让我们运行main.js
:
$ node main.js The result is: true
以下是官方文档的解释:
- 模块在第一次加载后被caching。 这意味着(除其他外)每个调用require('foo')将得到完全相同的对象返回 ,如果它将parsing为相同的文件。