Projektová štruktúra aplikácie Total.js
Aplikácia Total.js je priečinok so štartovacím skriptom (index.js) a sadou priečinkov s pevnými názvami. Svoje súbory neimportujete: pri štarte aplikácie Total.js prečíta priečinky nižšie a načíta každý súbor .js v nich (v priečinku plugins/ načíta index.js z každého podpriečinka). Súbor je bežný modul Node.js; ak exportuje funkciu install, Total.js ju po načítaní súboru zavolá.
| Priečinok | Čo patrí dovnútra |
|---|---|
controllers/ | Routy: exports.install = function() { ROUTE(...) }. |
definitions/ | Kód, ktorý sa spustí pri štarte a deklaruje globálne veci: akcie cez NEWACTION(), middleware, AUTH(), helpery, vaše vlastné globálne premenné. |
actions/ | Akcie (NEWACTION()), ak ich chcete mať oddelene od ostatných definícií. |
schemas/ | Schémy (NEWSCHEMA()) s ich akciami. |
models/ | Načíta sa pri štarte ako ostatné; Total.js súbory iba načíta, ich obsah je na vás. |
middleware/ | Middleware (MIDDLEWARE()), načítaný po ostatných priečinkoch. |
modules/ | Opakovane použiteľné moduly; export môže mať id (uloží sa do MODS) a funkciu install. |
extensions/ | Načíta sa pri štarte ako ostatné; Total.js súbory iba načíta, ich obsah je na vás. |
plugins/ | Pluginy: jeden priečinok na plugin s index.js. |
views/ | HTML pohľady a layout.html. |
public/ | Statické súbory poskytované tak, ako sú, bez akejkoľvek routy. |
resources/ | Prekladové súbory (.resource), pozrite recept o lokalizácii. |
jsonschemas/ | Opakovane použiteľné definície vstupu (.txt alebo .json), pozrite recept o schémach. |
databases/ | Súbory vstavanej NoSQL databázy a MEMORIZE(). |
tmp/ | Dočasné súbory a cache (PATH.tmp()). |
logs/ | Súbory logov. |
private/ | Súbory, ktoré nesmú byť verejné; odošlite ich cez $.file() po kontrole. |
workers/ | Súbory NEWTHREAD() a NEWFORK(). |
config | Konfiguračný súbor (súbor, nie priečinok). |
Helpery PATH vytvárajú absolútnu cestu každého priečinka: PATH.root(), PATH.public(), PATH.private(), PATH.tmp(), PATH.logs(), PATH.databases(). Vracajú cestu bez koncovej lomky a priečinok pohľadov helper nemá. Príklad vloží súbor do každého priečinka, ktorý Total.js načítava, a prečíta späť, čo sa načítalo.
(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()
}
});
}