Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以在整个应用程序的Node.js上保留一个实例?_Node.js - Fatal编程技术网

是否可以在整个应用程序的Node.js上保留一个实例?

是否可以在整个应用程序的Node.js上保留一个实例?,node.js,Node.js,我想在模块中实例化一个类,如下所示: const Agenda = require('agenda'); const agenda = new Agenda({db: {address: mongoConnectionString}}); const agenda = global.agenda; 然后从代码中的其他地方访问议程已配置的对象(如单例)。起初我考虑使用module.exports=agenda我知道,但这是一种反模式,是一种非常糟糕的做法。我正在寻找另一种选择。有一篇很好的文

我想在模块中实例化一个类,如下所示:

const Agenda = require('agenda');

const agenda = new Agenda({db: {address: mongoConnectionString}});
const agenda = global.agenda;

然后从代码中的其他地方访问
议程
已配置的对象(如单例)。起初我考虑使用
module.exports=agenda

那么,如果我没有错的话,实现这一目标的最佳方法是什么?谢谢。

您可以使用全局对象在节点应用程序中的任何位置共享变量:

const Agenda = require('agenda');

const agenda = new Agenda({db: {address: mongoConnectionString}});

global.agenda = agenda;
然后你可以在另一个模块中获得你的议程,如下所示:

const Agenda = require('agenda');

const agenda = new Agenda({db: {address: mongoConnectionString}});
const agenda = global.agenda;

“但是,当我在应用程序的另一个模块中需要这个模块时,它将再次执行所有代码?”->我知道,但这是一种反模式,是一种非常糟糕的做法。我正在寻找另一种选择。有一篇很好的文章解释