如何避免使用全局?

时间:2015-01-28 19:13:08

标签: node.js

我有一个非常小的nodejs应用程序。在这个应用程序中,我在app.js中定义了一个模型对象,如:

global.model = {
    name: 'Foobar'
};

模型不会持久保存到任何存储空间,而是始终保存在内存中。我的要求是,能够在我的应用程序的任何模块中阅读和修改此模型。

我读到使用global是不好的做法。有什么更好的方法?通过出口?你能解释一下吗?

1 个答案:

答案 0 :(得分:2)

您可以拥有一个用于创建和存储模型的模块。然后,任何其他想要获取模型的模块都可以require()模型模块,然后在其上调用方法来获取单个共享模型。

在model.js中:

var mymodel = {
   name: 'Foobar'
}

module.exports.getModel = function() { return mymodel;}

在任何其他想要获取模型的模块中:

var mymodel = require('./model').getModel();

如果您的模型模块通常不会用于其他事情,那么您可以像这样简化它:

var mymodel = {
   name: 'Foobar'
}

module.exports = function() { return mymodel;}

在任何其他想要获取模型的模块中:

var mymodel = require('./model')();