在全球范围内制作“app”环境是一种好习惯吗?

时间:2013-10-19 18:19:49

标签: node.js express

有一种方法可以在Node.JS上使用变量上的GLOBAL前缀来全局工作变量和函数。

var app = express();

将其转为:

GLOBAL.app = express();

我害怕这种方法是关于这种内存泄漏方法的含义或者当应用程序变大时的其他方法。

跳过此方法的另一种方法是在外部所需函数上使用外部参数。 I.g:

var myFunction = require('./functions/myFunction.js') (app);

如果“myFunction”支持外部参数,您可以传递应用程序,但是在这种方法中,您可以每次传递“app”参数并在初始化任何内部函数之前在函数范围上处理它。这是一种恼人的行为,尽管它更像是“面向对象”。

你们可以谈论这些东西?我可以不断在全局范围视图中放入一些重要的变量吗?

1 个答案:

答案 0 :(得分:1)

不,在Node中使用任何全局变量是不好的做法,这样做没有任何优势。 app.js可以是您的主循环。您可以使用app.use或使用以下两种模式之一传递app

var everyauth = require('./middleware/everyauth.js');
var errors = require('./middleware/errors.js');
app.use(everyauth.middleware());
errors(app);

如果您希望测试启动服务器,请在mocha中执行以下操作:

before(function () {
  require('../../app.js');
});

问题不在于内存泄漏;它是关于最小化代码中的依赖关系。