我刚刚对最新的节点V0.4.6做了一些测试。我确认了以下内容:
- 从“需要”返回的变量是单例。
- 随后的更改将更改所需模块以及包含它的所有其他模块中的数据。
- 猫鼬的联系有点奇怪。即使断开连接并将其设置为新的连接路径,它仍会使用旧的连接路径。
因此,以上第一点和第二点的意思是:
如果您有 Module Master :
var myStr = 'ABC';module.exports.appendStr = function(data) { myStr += ' ' + data; };module.exports.output = function() { console.log("Output: " + myStr);};并且如果您还有其他两个模块:
模块A
var mc = require('./moduleMaster.js');var ma = function() {mc.appendStr(' MA '); };ma.prototype.output = function() { mc.output();}module.exports.create = function() { return new ma();};module.exports._class = ma;模块B
var mc = require('./moduleMaster.js');var mb = function() {mc.appendStr(' MB '); };ma.prototype.output = function() { mc.output();}module.exports.create = function() { return new mb();};module.exports._class = mb;现在,当您运行需要模块A和模块B的测试脚本时,请实例化它们并输出:
mTestA.output();mTestB.output();
您将获得以下输出:
ABC MAABC MA MB
代替
ABC MAABC MB
因此,它是一个单例。不仅限于模块本地。



