ForgeDocumentazione
it

Documentazione

Struttura del progetto di un'applicazione Total.js

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

Un'applicazione Total.js è una cartella con uno script di avvio (index.js) e un insieme di cartelle con nomi fissi. Non importi i tuoi file: all'avvio, Total.js legge le cartelle qui sotto e carica ogni file .js che contengono (in una cartella chiamata plugins/ carica l'index.js di ogni sottocartella). Un file è un normale modulo Node.js; se esporta una funzione install, Total.js la chiama dopo aver caricato il file.

CartellaCosa contiene
controllers/Route: exports.install = function() { ROUTE(...) }.
definitions/Codice eseguito all'avvio che dichiara cose globali: azioni con NEWACTION(), middleware, AUTH(), helper, i tuoi globali.
actions/Azioni (NEWACTION()), se preferisci tenerle separate dalle altre definizioni.
schemas/Schemi (NEWSCHEMA()) con le loro azioni.
models/Caricata all'avvio come le altre; Total.js carica solo i file, il contenuto sta a te.
middleware/Middleware (MIDDLEWARE()), caricato dopo le altre cartelle.
modules/Moduli riutilizzabili; l'export può avere un id (conservato in MODS) e una funzione install.
extensions/Caricata all'avvio come le altre; Total.js carica solo i file, il contenuto sta a te.
plugins/Plugin: una cartella per plugin con un index.js.
views/Viste HTML e il layout.html.
public/File statici serviti così come sono, senza alcuna route.
resources/File di traduzione (.resource), vedi la ricetta sulla localizzazione.
jsonschemas/Definizioni di input riutilizzabili (.txt o .json), vedi la ricetta sugli schemi.
databases/File del database NoSQL integrato e di MEMORIZE().
tmp/File temporanei e cache (PATH.tmp()).
logs/File di log.
private/File che non devono essere pubblici; inviali con $.file() dopo un controllo.
workers/File di NEWTHREAD() e NEWFORK().
configIl file di configurazione (un file, non una cartella).

Gli helper di PATH costruiscono il percorso assoluto di ogni cartella: PATH.root(), PATH.public(), PATH.private(), PATH.tmp(), PATH.logs(), PATH.databases(). Restituiscono il percorso senza barra finale e la cartella delle viste non ha un helper. L'esempio inserisce un file in ciascuna delle cartelle che Total.js carica e rilegge ciò che è stato caricato.

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