Full-Stack Writing a Singleton in Node

Singleton Module
Singleton are often needed, here is a quick way to write a singleton in Node.js:
singleton.js
module.exports = {
x: 1,
g: (v) => v*v
}
Use the Singleton
one.js
var singleton = require('./singleton');
module.exports = {
f: () => {
singleton.x = singleton.x + 20;
}
}
two.js
var singleton = require('./singleton');
module.exports = {
f: () => {
singleton.x = singleton.x + 30;
}
}
Test It
test.js
var async = require('async');
var one = require('./one');
var two = require('./two');
var singleton = require('./singleton');
console.log('before', singleton.x);
async.series([
function(callback) {
one.f();
callback(null, 'one');
},
function(callback) {
console.log('after one', singleton.x);
two.f();
callback(null, 'two');
},
function(callback) {
console.log('after one + two', singleton.x);
one.f();
callback(null, 'one');
},
],
function(err, results) {
console.log('after one + two + one', singleton.x);
});
run test:
Run with:
node test.js
Yields:
before 1
after one 21
after one + two 51
after one + two + one 71
Yoram Kornatzky
Yoram Kornatzky