所以,我不确定那是什么。如果在 ModuleA中 ,我有:
var mongoose = require('mongoose'); mongoose.connect(pathA);
在 ModuleB中 ,我有:
var mongoose = require('mongoose'); mongoose.connect(pathB);
在主程序中,我有:
var mA = require('./moduleA.js'), mB = require('./moduleB.js');
因此,当我运行主程序时,我想我将创建两个猫鼬“实例”;一个连接到pathA,一个连接到pathB,对吗?
另外,在模块B中,在我连接到pathB之前,它是连接到pathA还是什么都没有?
谢谢。
我刚刚对最新的节点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 MA ABC MA MB
代替
ABC MA ABC MB
因此,它是一个单例。不仅限于模块本地。