ForgeTotal.js 5
bg

Total.js 5

Работа в режим debug и release

Total.js 5 · total5@0.0.19 deploymentdebugreleaseenvironment Изпълнено с Total.js 5

Total.js работи в един от два режима, debug за разработка и release за сървъра, а глобалната булева стойност DEBUG казва на вашия код кой е активен. В режим debug приложението работи под наблюдател на файлове (watcher), който го рестартира, когато промените файл, грешките показват подробности и се генерират source maps. Режим release няма watcher, а страниците за грешки не показват техническите подробности.

Режимът се определя от начина, по който се стартира приложението, в стартовия скрипт (index.js), който извиква Total.run(options):

  • по подразбиране е debug, с watcher;
  • options.release = true стартира режим release; стартовият скрипт, който Total.js генерира, го задава от командния ред, така че node index.js --release е начинът да стартирате продукцията;
  • options.watcher = false изпълнява един процес без watcher и това винаги е режим release (това използват примерите на този сборник с рецепти).

Преди Total.run() да реши, DEBUG има стойност по подразбиране от NODE_ENV: тя е false, когато NODE_ENV=production, и true в останалите случаи. Кодът, който се изпълнява в момента на зареждане на модул, вижда тази стойност по подразбиране, затова не разчитайте на NODE_ENV за крайния режим, а само на DEBUG след като приложението е стартирало.

Маршрутите могат да следват режима. Флагът @debug кара маршрут да съществува само в режим debug, а @release само в режим release; в другия режим URL отговаря с 404. Използвайте @debug за инструменти, които ви трябват по време на разработка (преглед на базата данни, маршрут с тестови данни), за да не стигнат никога по погрешка до продукцията.

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