ForgeDocumentación
es

Documentación

Estructura de un proyecto Total.js 5

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

Una aplicación Total.js es una carpeta con un script de inicio (index.js) y un conjunto de carpetas con nombres fijos. No importas tus archivos: cuando la aplicación arranca, Total.js lee las carpetas de abajo y carga cada archivo .js que contienen (en una carpeta llamada plugins/ carga el index.js de cada subcarpeta). Un archivo es un módulo normal de Node.js; si exporta una función install, Total.js la llama después de cargar el archivo.

CarpetaQué contiene
controllers/Rutas: exports.install = function() { ROUTE(...) }.
definitions/Código que se ejecuta al inicio y declara cosas globales: acciones con NEWACTION(), middleware, AUTH(), helpers, tus propios globales.
actions/Acciones (NEWACTION()), cuando prefieres tenerlas aparte de las demás definiciones.
schemas/Esquemas (NEWSCHEMA()) con sus acciones.
models/Se carga al inicio como las demás; Total.js solo carga los archivos, lo que contienen depende de ti.
middleware/Middleware (MIDDLEWARE()), cargado después de las demás carpetas.
modules/Módulos reutilizables; la exportación puede tener un id (se guarda en MODS) y una función install.
extensions/Se carga al inicio como las demás; Total.js solo carga los archivos, lo que contienen depende de ti.
plugins/Plugins: una carpeta por plugin con un index.js.
views/Vistas HTML y el layout.html.
public/Archivos estáticos servidos tal cual, sin ninguna ruta.
resources/Archivos de traducción (.resource), consulta la receta de localización.
jsonschemas/Definiciones de entrada reutilizables (.txt o .json), consulta la receta de esquemas.
databases/Archivos de la base de datos NoSQL integrada y de MEMORIZE().
tmp/Archivos temporales y cachés (PATH.tmp()).
logs/Archivos de registro.
private/Archivos que no deben ser públicos; envíalos con $.file() después de una comprobación.
workers/Archivos de NEWTHREAD() y NEWFORK().
configEl archivo de configuración (un archivo, no una carpeta).

Los helpers de PATH construyen la ruta absoluta de cada carpeta: PATH.root(), PATH.public(), PATH.private(), PATH.tmp(), PATH.logs(), PATH.databases(). Devuelven la ruta sin barra final, y la carpeta de las vistas no tiene helper. El ejemplo coloca un archivo en cada una de las carpetas que carga Total.js y lee lo que se cargó.

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