Estructura de un proyecto 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.
| Carpeta | Qué 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(). |
config | El 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ó.
(MAIN.loaded = MAIN.loaded || []).push('extensions');(MAIN.loaded = MAIN.loaded || []).push('modules');
module.exports.id = 'modules-file';(MAIN.loaded = MAIN.loaded || []).push('actions');(MAIN.loaded = MAIN.loaded || []).push('schemas');(MAIN.loaded = MAIN.loaded || []).push('models');(MAIN.loaded = MAIN.loaded || []).push('definitions');(MAIN.loaded = MAIN.loaded || []).push('controllers');(MAIN.loaded = MAIN.loaded || []).push('middleware');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()
}
});
}