Проектна структура на приложение Total.js 5
Приложението с Total.js е папка със стартов скрипт (index.js) и набор от папки с фиксирани имена. Не импортирате файловете си: при стартиране на приложението Total.js чете папките по-долу и зарежда всеки .js файл в тях (в папка с име plugins/ зарежда index.js на всяка подпапка). Файлът е обикновен Node.js модул; ако експортира функция install, Total.js я извиква след зареждането на файла.
| Папка | Какво съдържа |
|---|---|
controllers/ | Маршрути: exports.install = function() { ROUTE(...) }. |
definitions/ | Код, който се изпълнява при старт и декларира глобални неща: действия с NEWACTION(), middleware, AUTH(), помощни функции, собствени глобални. |
actions/ | Действия (NEWACTION()), когато предпочитате да са отделно от останалите дефиниции. |
schemas/ | Схеми (NEWSCHEMA()) с техните действия. |
models/ | Зарежда се при старт като останалите; Total.js само зарежда файловете, какво съдържат зависи от вас. |
middleware/ | Middleware (MIDDLEWARE()), зарежда се след останалите папки. |
modules/ | Преизползваеми модули; експортът може да има id (пази се в MODS) и функция install. |
extensions/ | Зарежда се при старт като останалите; Total.js само зарежда файловете, какво съдържат зависи от вас. |
plugins/ | Плъгини: една папка на плъгин с index.js. |
views/ | HTML изгледи и layout.html. |
public/ | Статични файлове, сервирани такива, каквито са, без никакъв маршрут. |
resources/ | Файлове с преводи (.resource), вижте рецептата за локализация. |
jsonschemas/ | Преизползваеми дефиниции на вход (.txt или .json), вижте рецептата за схемите. |
databases/ | Файлове на вградената NoSQL база данни и на MEMORIZE(). |
tmp/ | Временни файлове и кешове (PATH.tmp()). |
logs/ | Лог файлове. |
private/ | Файлове, които не трябва да са публични; изпращайте ги с $.file() след проверка. |
workers/ | Файлове на NEWTHREAD() и NEWFORK(). |
config | Конфигурационният файл (файл, не папка). |
Помощните функции на PATH изграждат абсолютния път на всяка папка: PATH.root(), PATH.public(), PATH.private(), PATH.tmp(), PATH.logs(), PATH.databases(). Те връщат пътя без завършваща наклонена черта, а за папката на изгледите няма помощна функция. Примерът поставя файл във всяка от папките, които Total.js зарежда, и чете обратно какво е заредено.
(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()
}
});
}