gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 05:46:46 24 4
gpt4 key购买 nike

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com