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

时间:2019-04-13 14:11:58

标签: node.js express module singleton

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

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

之后,它可以像

那样使用
myCache.get(key)

我遇到的问题是,在快速设置中,我的路由是动态的,我无法访问index.js中声明的myCache常量,我在模块上读取并了解它们已被缓存,并且每次调用都需要调用新的调用获取缓存的版本。

要克服我的问题并能够从我想到的在路线中使用以下单例方法的任何路线调用同一对象;

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

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

nodeCache.instance.get('key');

这似乎很好用,但是我不确定是否应该进行此设置,或者是否有更好的选择。

1 个答案:

答案 0 :(得分:1)

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

cache.js模块可以是:

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

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

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