Structura proiectului a unei aplicații Total.js 5
O aplicație Total.js este un folder cu un script de pornire (index.js) și un set de foldere cu nume fixe. Nu îți imporți fișierele: la pornirea aplicației, Total.js citește folderele de mai jos și încarcă fiecare fișier .js din ele (într-un folder numit plugins/ încarcă index.js din fiecare subfolder). Un fișier este un modul Node.js obișnuit; dacă exportă o funcție install, Total.js o apelează după încărcarea fișierului.
| Folder | Ce conține |
|---|---|
controllers/ | Rute: exports.install = function() { ROUTE(...) }. |
definitions/ | Cod care rulează la pornire și declară lucruri globale: acțiuni cu NEWACTION(), middleware, AUTH(), helperi, propriile tale globale. |
actions/ | Acțiuni (NEWACTION()), dacă preferi să le ții separat de celelalte definiții. |
schemas/ | Scheme (NEWSCHEMA()) cu acțiunile lor. |
models/ | Încărcat la pornire ca celelalte; Total.js doar încarcă fișierele, conținutul lor depinde de tine. |
middleware/ | Middleware (MIDDLEWARE()), încărcat după celelalte foldere. |
modules/ | Module reutilizabile; exportul poate avea un id (păstrat în MODS) și o funcție install. |
extensions/ | Încărcat la pornire ca celelalte; Total.js doar încarcă fișierele, conținutul lor depinde de tine. |
plugins/ | Plugin-uri: un folder pe plugin, cu un index.js. |
views/ | Vizualizări HTML și layout.html. |
public/ | Fișiere statice servite așa cum sunt, fără nicio rută. |
resources/ | Fișiere de traducere (.resource), vezi rețeta de localizare. |
jsonschemas/ | Definiții de intrare reutilizabile (.txt sau .json), vezi rețeta despre scheme. |
databases/ | Fișierele bazei de date NoSQL integrate și ale MEMORIZE(). |
tmp/ | Fișiere temporare și cache-uri (PATH.tmp()). |
logs/ | Fișiere de jurnal. |
private/ | Fișiere care nu trebuie să fie publice; trimite-le cu $.file() după o verificare. |
workers/ | Fișierele NEWTHREAD() și NEWFORK(). |
config | Fișierul de configurare (un fișier, nu un folder). |
Helperii PATH construiesc calea absolută a fiecărui folder: PATH.root(), PATH.public(), PATH.private(), PATH.tmp(), PATH.logs(), PATH.databases(). Returnează calea fără bară finală, iar folderul vizualizărilor nu are helper. Exemplul pune un fișier în fiecare dintre folderele pe care le încarcă Total.js și citește înapoi ce s-a încărcat.
(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()
}
});
}