对 node.js 个模块使用单例方法

Using a singleton-ish approach for node.js modules

我在基于表达的应用程序中使用节点缓存。需要使用以下代码进行设置;

const NodeCache = require( "node-cache" );
const myCache = new NodeCache( { stdTTL: 100, checkperiod: 120 } );

之后可以像

一样使用
myCache.get(key)

我遇到的问题是,在快速设置中,我的路由是动态的,我无法访问 index.js 中声明的 myCache 常量调用 require 的调用获取缓存版本。

为了克服我的问题并能够从我想到的任何路由调用相同的对象,我想在我的路由中使用以下单例方法;

var nodeCache = require('node-cache');

if (!nodeCache.instance) {
    nodeCache.instance = new nodeCache({ stdTTL: 3600 });
}

nodeCache.instance.get('key');

这似乎工作得很好,但我不太确定这个设置,如果这是应该做的事情,或者是否有更好的选择。

CommonJS 模块在第一次导入时进行评估,并且能够自然地提供单例作为导出值。

cache.js 模块可以是:

var nodeCache = require('node-cache');

module.exports = new nodeCache({ stdTTL: 3600 });

然后从 cache.js 任何使用它的地方导入相同的节点缓存实例。