Im Debug- und im Release-Modus ausführen
Total.js läuft in einem von zwei Modi, debug für die Entwicklung und release für den Server, und der globale Boolean DEBUG sagt deinem Code, welcher aktiv ist. Im Debug-Modus läuft die Anwendung unter einem Datei-Watcher, der sie bei einer Dateiänderung neu startet, Fehler zeigen Details und Source Maps werden erzeugt. Der Release-Modus hat keinen Watcher, und die Fehlerseiten enthalten keine technischen Details.
Der Modus wird dadurch bestimmt, wie die Anwendung gestartet wird, im Startskript (index.js), das Total.run(options) aufruft:
- der Standard ist debug, mit dem Watcher;
options.release = truestartet den Release-Modus; das von Total.js generierte Startskript setzt es über die Kommandozeile,node index.js --releaseist also der Weg, die Produktion zu starten;options.watcher = falseführt einen einzelnen Prozess ohne Watcher aus, und das ist immer der Release-Modus (die Beispiele dieses Kochbuchs verwenden es).
Bevor Total.run() entschieden hat, hat DEBUG einen Standardwert aus NODE_ENV: Er ist false, wenn NODE_ENV=production, und sonst true. Code, der beim Laden eines Moduls läuft, sieht diesen Standardwert, verlasse dich für den endgültigen Modus also nicht auf NODE_ENV, sondern nur auf DEBUG, nachdem die Anwendung gestartet ist.
Die Routen können dem Modus folgen. Das Flag @debug lässt eine Route nur im Debug-Modus existieren und @release nur im Release-Modus; im anderen Modus antwortet die URL mit 404. Nutze @debug für Werkzeuge, die du während der Entwicklung brauchst (einen Datenbank-Viewer, eine Route zum Befüllen mit Testdaten), damit sie nie versehentlich in die Produktion gelangen.
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' });
}