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.