我有一个在app.js文件中初始化的初始化对象,我想使这个初始化对象在所有模块中都可用。我怎么能这么做?将这个对象传递给每个模块是一种方法,我想知道我是否遗漏了什么,还是应该以不同的方式完成?
我看到猫鼬实际上支持默认连接,我需要在app.js中插入它一次,在其他模块中的任何地方,我只需要简单地使用它,而不需要传递它。我也能这样做吗?
我还检查了来自node.js http://nodejs.org/api/globals.html的全局对象文档,并想知道我是否应该使用全局发布。
谢谢
发布于 2013-09-11 19:21:08
一个小小的建议:
下面是一个示例,说明如何使用单例进行日志记录:
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.');希望这能有所帮助。
发布于 2013-09-06 03:57:12
正如您建议的那样,解决方案是将对象作为属性添加到全局对象中。但是,我建议不要这样做,不要将对象放在它自己的模块中,即required,而不是其他需要它的模块。稍后,您将以几种方式获得好处。首先,它总是明确该对象的来源和初始化的位置。在对象初始化之前,您永远不会尝试使用它(假设定义对象的模块也初始化它)。而且,这将有助于使您的代码更易于测试,
https://stackoverflow.com/questions/18649350
复制相似问题