当前位置: 首页 > 面试题库 >

在Node.js中,是否在“需要”时创建一个新对象?

吴刚毅
2023-03-14
问题内容

所以,我不确定那是什么。如果在 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做了一些测试。我确认了以下内容:

  1. 从“需要”返回的变量是单例。
  2. 随后的更改将更改所需模块以及包含它的所有其他模块中的数据。
  3. 猫鼬的联系有点奇怪。即使断开连接并将其设置为新的连接路径,它仍会使用旧的连接路径。

因此,以上第一点和第二点的意思是:

如果您有 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 = functhtml" target="_blank">ion() {
  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

因此,它是一个单例。不仅限于模块本地。



 类似资料:
  • 问题内容: 我想在我的JavaScript代码中包含几个JSON文件,这些文件与JavaScript源文件位于同一目录中。 如果我想包含另一个JavaScript文件,可以直接使用。现在,我正在使用和获取JSON,我认为这是执行此操作的丑陋方法。 是否有类似的要求,使我能够加载JSON文件? 问题答案: 从节点v0.5.x开始,是的,您可以像需要js文件一样要求JSON。 在ES6中:

  • 或者只有一个属性userid类型整数是有效的吗?这样,jpql查询如下所示:

  • 问题内容: 众所周知,Windows使用带反斜杠的路径,而Unix使用带反斜杠的路径。node.js提供了始终使用正确的斜杠。因此,例如,您不必编写Unix,而只编写Unix 。 但是,似乎存在这种差异,但是如果您不对路径进行规范化(例如,使用path.join),而仅编写诸如node.js之类的路径,则在Windows上运行脚本没有问题。 那么,有没有写上任何好处了?无论平台如何,两者似乎都可以

  • 问题内容: 所以我的任务听起来很简单,但是却使我感到困惑。我已经浏览了Internet上的代码,但无法掌握。我也无法掌握老师张贴的幻灯片。这是我的要求。 创建一个新的运行时异常类型,称为EmptyStackException。 但是,我不知道如何制作方法,类,变量或满足要求所需的任何内容。我有一些类是DynamicArrayStack和LinkedStack的实现。堆栈的接口。 任何指针将大有帮助

  • 我有数据集,我需要调整通货膨胀的多个变量。它看起来像这样。 我需要把这些都放在一个恒定的格式中(比如2020美元)。我可以用< code>priceR包中的< code > adjust _ for _ inflation 函数很容易地做到这一点。然而,有很多价格变量,所以我想自动创建它们。我一直在尝试使用< code > cross ,但它不起作用。以下是我一直在尝试的。 据我所知,这应该是一个