2015-03-03 53 views
3

在nodejs模块中是单身人士。我创建了一个获取配置对象并返回一些对象的模块。但最后,我将拥有模块的单个实例。 ?如何对不同配置多个实例(每次需要的时候,它应该是不同的情况下如何实现这一目标?)如何在node.js中获取模块的多个实例?

回答

7

出口构造并没有隐含的状态:

您当前的代码看起来是这样的:

module.exports = { ..}; // some object 

而是导出一个构造函数:

module.exports = function(){ 
    // initialize module here, no global variables 
    return { .. }; 
}; 
+0

在您的.js文件中定义的所有变量我认为基于Node.js的工作方式是不是全局性的,因为在节点模块中没有全局变量,所以没有全局变量在这里没有意义。即使你已经在模块外定义了变量,它们也不是全局的.export甚至 – PositiveGuy 2015-11-30 09:03:36

+0

为什么你要返回对象?我尝试过,但在需要该模块的代码中,它无法访问我放入该对象的任何属性。 – PositiveGuy 2015-11-30 09:07:15

+0

@WeDoTDD确保出口是全球性的,它们在模块的所有“需求”中都是全球性的。 'module.exports =“foo”'表示我可以'require(“./ myModule”)'并在任何地方访问导出。至于返回对象 - 你必须调用模块作为一个函数 - 就像你通常调用的构造函数:var fooBuilder = require(“foo”); var foo = fooBuilder()'或者更简洁'var foo = require(“foo”)()' - 这个模式在express中很常见。 – 2015-11-30 09:19:34

3

仅返回构造,并有对单身的专用模块:

的lib/user.js的:

module.exports = function() { ... } 

的lib/currentUser.js:

module.exports = new (require('./user'))(); 
0

我创建了一个模块与特定的目的,除了提供增加和获取您可以定义默认您构建的项目的参数。 检查出here

相关问题