ForgeTotal.js 5
el

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 διαφορετικά. Ο κώδικας που τρέχει τη στιγμή φόρτωσης ενός module βλέπει αυτή την προεπιλογή, γι' αυτό μην βασίζεστε στο 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' });
}