ForgeDokumentace
cs

Dokumentace

Projektová struktura aplikace Total.js 5

Total.js 5 · total5@0.0.19 guidestructurefolders Spuštěno s Total.js 5

Aplikace Total.js je složka se spouštěcím skriptem (index.js) a sadou složek s pevnými názvy. Své soubory neimportujete: při startu aplikace Total.js přečte složky níže a načte každý soubor .js v nich (ve složce plugins/ načte index.js z každé podsložky). Soubor je běžný modul Node.js; pokud exportuje funkci install, Total.js ji po načtení souboru zavolá.

SložkaCo do ní patří
controllers/Routy: exports.install = function() { ROUTE(...) }.
definitions/Kód, který se spustí při startu a deklaruje globální věci: akce přes NEWACTION(), middleware, AUTH(), helpery, vlastní globální proměnné.
actions/Akce (NEWACTION()), pokud je chcete mít odděleně od ostatních definic.
schemas/Schémata (NEWSCHEMA()) s jejich akcemi.
models/Načítá se při startu jako ostatní; Total.js soubory pouze načte, jejich obsah je na vás.
middleware/Middleware (MIDDLEWARE()), načítaný po ostatních složkách.
modules/Znovupoužitelné moduly; export může mít id (uloží se do MODS) a funkci install.
extensions/Načítá se při startu jako ostatní; Total.js soubory pouze načte, jejich obsah je na vás.
plugins/Pluginy: jedna složka na plugin se souborem index.js.
views/HTML pohledy a layout.html.
public/Statické soubory poskytované tak, jak jsou, bez jakékoli routy.
resources/Překladové soubory (.resource), viz recept o lokalizaci.
jsonschemas/Znovupoužitelné definice vstupu (.txt nebo .json), viz recept o schématech.
databases/Soubory vestavěné NoSQL databáze a MEMORIZE().
tmp/Dočasné soubory a cache (PATH.tmp()).
logs/Soubory logů.
private/Soubory, které nesmí být veřejné; odešlete je přes $.file() po kontrole.
workers/Soubory NEWTHREAD() a NEWFORK().
configKonfigurační soubor (soubor, nikoli složka).

Helpery PATH vytvářejí absolutní cestu každé složky: PATH.root(), PATH.public(), PATH.private(), PATH.tmp(), PATH.logs(), PATH.databases(). Vracejí cestu bez koncového lomítka a složka pohledů helper nemá. Příklad vloží soubor do každé složky, kterou Total.js načítá, a přečte zpět, co se načetlo.

extensions/marker.js
(MAIN.loaded = MAIN.loaded || []).push('extensions');
modules/marker.js
(MAIN.loaded = MAIN.loaded || []).push('modules');
module.exports.id = 'modules-file';
actions/marker.js
(MAIN.loaded = MAIN.loaded || []).push('actions');
schemas/marker.js
(MAIN.loaded = MAIN.loaded || []).push('schemas');
models/marker.js
(MAIN.loaded = MAIN.loaded || []).push('models');
definitions/marker.js
(MAIN.loaded = MAIN.loaded || []).push('definitions');
controllers/marker.js
(MAIN.loaded = MAIN.loaded || []).push('controllers');
middleware/marker.js
(MAIN.loaded = MAIN.loaded || []).push('middleware');
controllers/structure.js
exports.install = function() {
	ROUTE('GET /structure/', structure);
};

function structure($) {
	$.json({
		loaded: MAIN.loaded || [],
		modules: Object.keys(MODS),
		paths: {
			root: PATH.root(),
			public: PATH.public(),
			private: PATH.private(),
			tmp: PATH.tmp(),
			logs: PATH.logs(),
			databases: PATH.databases()
		}
	});
}