Node.js使所有模块中的初始化对象可用

Nam*_*yen 5 javascript node.js

我有一个初始化的对象,我在app.js文件中初始化,我想使这个初始化对象在所有模块中都可用.我怎么能这样做?将这个对象传递给每个模块是一种方法,我想知道我是否缺少任何东西,或者应该以不同的方式完成?

我看到mongoose实际上支持默认连接,我需要在app.js中初始化一次和其他模块中的任何地方,我可以简单地使用它而不需要传递它.有没有我可以像这样做?

我还检查了node.js http://nodejs.org/api/globals.html中的全局对象文档,并想知道我应该使用global来解决问题.

谢谢

Eri*_*ott 10

一点建议:

  • 你应该很少需要使用全局.如果你认为你需要一个,你可能不需要.
  • 单身人士通常是Node.js中的反模式,但有时(日志,配置)他们将完成工作.
  • 传递一些东西有时是一种有用且有价值的模式.

以下是如何使用单例进行日志记录的示例:

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;
Run Code Online (Sandbox Code Playgroud)

LIB/module.js

var logger = require('./logger.js'),
  log = logger();

log.info('Something happened.');
Run Code Online (Sandbox Code Playgroud)

希望有所帮助.