Executar em modo debug e em modo release
O Total.js funciona num de dois modos, debug para desenvolver e release para o servidor, e o booleano global DEBUG diz ao seu código qual está ativo. No modo debug a aplicação corre sob um watcher que a reinicia quando altera um ficheiro, os erros mostram detalhes e são geradas source maps. O modo release não tem watcher e as páginas de erro não mostram os detalhes técnicos.
O modo é escolhido pela forma como a aplicação é iniciada, no script de arranque (index.js) que chama Total.run(options):
- por omissão é debug, com o watcher;
options.release = trueinicia o modo release; o script de arranque que o Total.js gera ativa-o a partir da linha de comandos, por issonode index.js --releaseé a forma de arrancar a produção;options.watcher = falseexecuta um único processo sem watcher, e isso é sempre o modo release (é o que usam os exemplos deste livro de receitas).
Antes de Total.run() ter decidido, DEBUG tem um valor por omissão vindo de NODE_ENV: é false quando NODE_ENV=production e true caso contrário. O código que corre no momento em que um módulo é carregado vê esse valor por omissão, por isso não confie em NODE_ENV para o modo final, apenas em DEBUG depois de a aplicação ter arrancado.
As rotas podem seguir o modo. A flag @debug faz com que uma rota exista só no modo debug e @release só no modo release; no outro modo o URL responde 404. Use @debug para as ferramentas de que precisa durante o desenvolvimento (um visualizador de base de dados, uma rota de dados de teste), para que nunca cheguem à produção por acidente.
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' });
}