Draaien in debug- en releasemodus
Total.js draait in een van twee modi, debug voor ontwikkeling en release voor de server, en de globale boolean DEBUG vertelt je code welke actief is. In debugmodus draait de applicatie onder een bestandswatcher die haar herstart wanneer je een bestand wijzigt, tonen fouten details en worden source maps gegenereerd. De releasemodus heeft geen watcher en de foutpagina's tonen geen technische details.
De modus wordt bepaald door hoe de applicatie wordt gestart, in het startscript (index.js) dat Total.run(options) aanroept:
- de standaard is debug, met de watcher;
options.release = truestart de releasemodus; het startscript dat Total.js genereert stelt dat in vanaf de opdrachtregel, dusnode index.js --releaseis de manier om productie te starten;options.watcher = falsedraait één proces zonder watcher, en dat is altijd releasemodus (het is wat de voorbeelden van dit kookboek gebruiken).
Voordat Total.run() heeft beslist, heeft DEBUG een standaardwaarde uit NODE_ENV: die is false wanneer NODE_ENV=production en anders true. Code die draait op het moment dat een module wordt geladen ziet die standaardwaarde, vertrouw dus voor de uiteindelijke modus niet op NODE_ENV, maar alleen op DEBUG nadat de applicatie is gestart.
De routes kunnen de modus volgen. De vlag @debug laat een route alleen in debugmodus bestaan en @release alleen in releasemodus; in de andere modus antwoordt de URL met 404. Gebruik @debug voor hulpmiddelen die je tijdens de ontwikkeling nodig hebt (een databaseviewer, een route met testgegevens), zodat ze nooit per ongeluk in productie belanden.
exports.install = function() {
ROUTE('GET /mode/', mode);
ROUTE('GET /tools/ @debug', tools);
ROUTE('GET /status/ @release', status);
};
function mode($) {
$.json({ debug: DEBUG });
}
function tools($) {
$.json({ tools: true });
}
function status($) {
$.json({ status: 'ok' });
}