Projektstruktur av en Total.js 5 ansökan
En Total.js-applikation är en mapp med ett startskript (index.js) och en uppsättning mappar med fasta namn. Du importerar inte dina filer: när applikationen startar läser Total.js mapparna nedan och laddar varje .js-fil i dem (i en mapp som heter plugins/ laddar den index.js i varje undermapp). En fil är en vanlig Node.js-modul; om den exporterar en install-funktion anropar Total.js den efter att filen laddats.
| Mapp | Vad som hör hemma där |
|---|---|
controllers/ | Routes: exports.install = function() { ROUTE(...) }. |
definitions/ | Kod som körs vid start och deklarerar globala saker: åtgärder med NEWACTION(), middleware, AUTH(), hjälpfunktioner, dina egna globaler. |
actions/ | Åtgärder (NEWACTION()), om du föredrar dem separat från de andra definitionerna. |
schemas/ | Scheman (NEWSCHEMA()) med deras åtgärder. |
models/ | Laddas vid start som de andra; Total.js laddar bara filerna, vad de innehåller är upp till dig. |
middleware/ | Middleware (MIDDLEWARE()), laddas efter de andra mapparna. |
modules/ | Återanvändbara moduler; exporten kan ha ett id (sparas i MODS) och en install-funktion. |
extensions/ | Laddas vid start som de andra; Total.js laddar bara filerna, vad de innehåller är upp till dig. |
plugins/ | Plugins: en mapp per plugin med en index.js. |
views/ | HTML-vyer och layout.html. |
public/ | Statiska filer som levereras som de är, utan någon route. |
resources/ | Översättningsfiler (.resource), se receptet om lokalisering. |
jsonschemas/ | Återanvändbara indatadefinitioner (.txt eller .json), se receptet om scheman. |
databases/ | Filer för den inbyggda NoSQL-databasen och för MEMORIZE(). |
tmp/ | Temporära filer och cacher (PATH.tmp()). |
logs/ | Loggfiler. |
private/ | Filer som inte får vara offentliga; skicka dem med $.file() efter en kontroll. |
workers/ | Filer för NEWTHREAD() och NEWFORK(). |
config | Konfigurationsfilen (en fil, inte en mapp). |
Hjälpfunktionerna i PATH bygger den absoluta sökvägen till varje mapp: PATH.root(), PATH.public(), PATH.private(), PATH.tmp(), PATH.logs(), PATH.databases(). De returnerar sökvägen utan avslutande snedstreck, och mappen för vyer har ingen hjälpfunktion. Exemplet lägger en fil i var och en av mapparna som Total.js laddar och läser tillbaka vad som laddades.
(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()
}
});
}