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

标签 javascript node.js

我有一个在 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/

相关文章:

node.js - 而在 Centos 7 上安装 Node JS 4.8 则安装 6.11

javascript - 使用 `scroll-behavior: smooth` 检测滚动何时完成

javascript - knockout 给出先前选择的值

node.js - 如何启用 node-gyp 并行构建?

javascript - ElectronJS 中的设备 ID 和操作系统版本号

node.js - JWT 认证 : Use UI token to authenticate Graphene/Django (GraphQL) queries?

javascript - 在某些情况下忽略 foreach afterAdd 和 beforeRemove

javascript - 2 个相似的模态

javascript - 将数据从 firestore 附加到 JavaScript 中的数组

node.js - 1>MDAVSCLI : error : EPERM, 不允许操作 'C:\Windows\CSC\v2.0.6'