我有一个在 app.js 文件中初始化的初始化对象,我想让这个初始化对象在所有模块中都可用。我怎么能那样做?将这个对象传递给每个模块是一种方法,我想知道我是否遗漏了什么或者应该以不同的方式完成?
我看到 mongoose 实际上支持默认连接,我需要在 app.js 中一次和在其他模块的任何地方初始化它,我可以简单地使用它而不需要传递它。有什么我可以像这样做的吗?
我还检查了来自 node.js 的全局对象文档 http://nodejs.org/api/globals.html ,并想知道我应该使用 global 作为问题。
谢谢
最佳答案
一点建议:
- 您应该很少需要使用全局变量。如果你认为你需要一个,你可能不需要。
- 单例通常是 Node.js 中的反模式,但有时(日志记录、配置)它们可以很好地完成工作。
- 传递一些东西有时是一种有用且有值(value)的模式。
这是一个如何使用单例进行日志记录的示例:
lib/logger.js
var bunyan = require('bunyan'),
mixIn = require('mout/object/mixIn'),
// add some default options here...
defaults = {},
// singleton
logger,
createLogger = function createLogger(options) {
var opts;
if (logger) {
return logger;
}
opts = mixIn({}, defaults, options);
logger = bunyan.createLogger(opts);
return logger;
};
module.exports = createLogger;
lib/module.js
var logger = require('./logger.js'),
log = logger();
log.info('Something happened.');
希望对您有所帮助。
关于javascript - Node.js 使初始化对象在所有模块中可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18649350/