ForgeTotal.js 5
it

Total.js 5

Eseguire in modalità debug e release

Total.js 5 · total5@0.0.19 deploymentdebugreleaseenvironment Eseguita con Total.js 5

Total.js funziona in una di due modalità, debug per lo sviluppo e release per il server, e il booleano globale DEBUG dice al tuo codice quale è attiva. In modalità debug l'applicazione gira sotto un watcher di file che la riavvia quando modifichi un file, gli errori mostrano dettagli e vengono generate le source map. La modalità release non ha watcher e le pagine di errore non mostrano i dettagli tecnici.

La modalità è scelta da come si avvia l'applicazione, nello script di avvio (index.js) che chiama Total.run(options):

  • il valore predefinito è debug, con il watcher;
  • options.release = true avvia la modalità release; lo script di avvio generato da Total.js la imposta dalla riga di comando, quindi node index.js --release è il modo di avviare la produzione;
  • options.watcher = false esegue un singolo processo senza watcher, e quella è sempre la modalità release (è ciò che usano gli esempi di questo ricettario).

Prima che Total.run() abbia deciso, DEBUG ha un valore predefinito preso da NODE_ENV: è false quando NODE_ENV=production e true altrimenti. Il codice che gira al momento del caricamento di un modulo vede quel valore predefinito, quindi non fare affidamento su NODE_ENV per la modalità finale, ma solo su DEBUG dopo l'avvio dell'applicazione.

Le rotte possono seguire la modalità. Il flag @debug fa esistere una rotta solo in modalità debug e @release solo in modalità release; nell'altra modalità l'URL risponde 404. Usa @debug per gli strumenti che ti servono durante lo sviluppo (un visualizzatore di database, una rotta di dati di prova) così non arriveranno mai in produzione per sbaglio.

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' });
}