如何在Node.js中与多个模块共享某个实例?

时间:2015-08-06 01:05:57

标签: node.js

假设我有main.js模块,shared.js和foo.js模块。

main.js文件如下:

function Main(){
    this.shared = new Shared();
}

Main.prototype.getFoo(){
    return new Foo();
}

现在,为了工作,Foo需要共享'在Main中创建的实例,除了传递'共享' Foo让Foo可以随时访问“共享”。实例

编辑:主要实例化一次。

2 个答案:

答案 0 :(得分:0)

您可以使用全局变量来执行此操作,但这不是适当的方法。更好的是你可以使用require()来做到这一点。在main.js中添加以下内容:

module.exports = Main;

现在在任何其他模块中你只需要它。

var Main = require('./main.js');

就是这样。这也适用于不同的包。

答案 1 :(得分:0)

我能够通过直接将共享实例传递给导出来解决这个问题。

shared.js:

module.exports = new Shared();

function Shared(){
    ...
}

main.js:

function Main(){
    this.shared = require('./shared.js');
}

Main.prototype.getFoo = function(){
    return new Foo();
}

foo.js:

function Foo(){
    this.shared = requrie('./shared.js');
}

这样Foo将使用Main中使用的相同“共享”实例,而不必传递它。我不确定这是否是一种“正确”的方式来实现我的需求,但它正在发挥作用。