ExpressJS a globální proměnné

ExpressJS je webový framework pro NodeJS.
Ve svých aplikací leckde potřebuji přistupovat v místě obsluhy requestu k nějakým globálním proměnným, které nelze klasicky načítat z modulu, protože i tyto moduly se dle místa deploye mění, takže nejde udělat jednoduché var cfg = require(‚./cfg.js‘);.

Řešení jsem našel v nastavení globální proměnné v rámci ExpressJS aplikace:

// app.js
// start aplikace
var argv = require('optimist').argv;
var cfg = require(argv.cfg);
var app = require('./server/server')(cfg);
var routeIndex = require('./routes/index');

// TOHLE JE TO MISTO, KDE SE NASTAVUJE GLOBALNI PROMENNA
app.set('cfg' cfg);

// namapovani funkci pro obsluhu danych rout
app.route('/').get(routeIndex.index);

// ./routes/index.js
// obsahuje funkce pro obslouhu dane routy
function index(req, res) {
  // A TAKHLE SE K GLOBALNI PROMENNE ZASE DOSTANETE: skrze request a jeji promennou app
  var cfg = req.app.get('cfg');
  res.render('index.jade');
}
module.exports = {
  index: index,
}

Globální proměnné jdou samozřejmě řešit i jinak, ale funkce set a get mi v rámci ExpressJS přišly jako ideální. Nemusíte nic řešit, vše máte v proměnné request, která se předává každé funkci, ktará obsluhuje nějakou routu.