A Total.js 5 alkalmazás tervezési szerkezete
A Total.js alkalmazás egy mappa egy indítószkripttel (index.js) és rögzített nevű mappák halmazával. A fájljaidat nem importálod: az alkalmazás indulásakor a Total.js beolvassa az alábbi mappákat, és betölt minden bennük lévő .js fájlt (a plugins/ nevű mappában minden almappa index.js fájlját tölti be). A fájl egy szokásos Node.js-modul; ha exportál egy install függvényt, a Total.js a fájl betöltése után meghívja.
| Mappa | Mi kerül bele |
|---|---|
controllers/ | Útvonalak: exports.install = function() { ROUTE(...) }. |
definitions/ | Induláskor lefutó kód, amely globális dolgokat deklarál: műveletek a NEWACTION()-nel, middleware, AUTH(), segédfüggvények, saját globálisok. |
actions/ | Műveletek (NEWACTION()), ha külön szeretnéd tartani őket a többi definíciótól. |
schemas/ | Sémák (NEWSCHEMA()) a műveleteikkel. |
models/ | Induláskor töltődik be, mint a többi; a Total.js csak a fájlokat tölti be, a tartalmuk rajtad múlik. |
middleware/ | Middleware (MIDDLEWARE()), a többi mappa után töltődik be. |
modules/ | Újrahasznosítható modulok; az export rendelkezhet id-vel (a MODS-ban tárolódik) és install függvénnyel. |
extensions/ | Induláskor töltődik be, mint a többi; a Total.js csak a fájlokat tölti be, a tartalmuk rajtad múlik. |
plugins/ | Bővítmények: bővítményenként egy mappa egy index.js fájllal. |
views/ | HTML nézetek és a layout.html. |
public/ | Statikus fájlok, változtatás nélkül kiszolgálva, útvonal nélkül. |
resources/ | Fordítási fájlok (.resource), lásd a lokalizációs receptet. |
jsonschemas/ | Újrahasznosítható bemeneti definíciók (.txt vagy .json), lásd a sémákról szóló receptet. |
databases/ | A beépített NoSQL adatbázis és a MEMORIZE() fájljai. |
tmp/ | Ideiglenes fájlok és gyorsítótárak (PATH.tmp()). |
logs/ | Naplófájlok. |
private/ | Fájlok, amelyek nem lehetnek nyilvánosak; ellenőrzés után küldd el őket a $.file()-lal. |
workers/ | A NEWTHREAD() és a NEWFORK() fájljai. |
config | A konfigurációs fájl (fájl, nem mappa). |
A PATH segédfüggvényei felépítik az egyes mappák abszolút útvonalát: PATH.root(), PATH.public(), PATH.private(), PATH.tmp(), PATH.logs(), PATH.databases(). Záró perjel nélküli útvonalat adnak vissza, a nézetek mappájához pedig nincs segédfüggvény. A példa minden olyan mappába tesz egy fájlt, amelyet a Total.js betölt, és visszaolvassa, mi töltődött be.
(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()
}
});
}