有状态单例模块

Stateful singleton modules

本文关键字:模块 单例 状态      更新时间:2023-09-26

你能有一个有状态的节点.js模块吗?喜欢:

exports.connectionsCache = new (function () {
    var cache = {};
    this.getOrCreate = function (url) {
        if (!cache[url]) {
            cache[url] = new Connection(url);
        }
        return cache[url];
    };
}());

该州能否经受住多次require电话?还是应该为此使用一个简单的全局对象?

require已经缓存了模块:

测试2.js:

module.exports = {
    state: 0
};

测试.js

var state = require("./test2.js");
state.state = 3;
console.log(state.state);
var state2 = require("./test2.js");
console.log(state2.state);
state2.state = 4;
console.log(state.state);

输出

$ node test.js
3
3
4