ForgeTotal.js 5
de

Total.js 5

Im Debug- und im Release-Modus ausführen

Total.js 5 · total5@0.0.19 deploymentdebugreleaseenvironment Mit Total.js 5 ausgeführt

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 = true startet den Release-Modus; das von Total.js generierte Startskript setzt es über die Kommandozeile, node index.js --release ist also der Weg, die Produktion zu starten;
  • options.watcher = false fü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.

controllers/mode.js
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' });
}