ForgeДокументация
bg

Документация

Проектна структура на приложение Total.js 5

Total.js 5 · total5@0.0.19 guidestructurefolders Изпълнено с 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 зарежда, и чете обратно какво е заредено.

extensions/marker.js
(MAIN.loaded = MAIN.loaded || []).push('extensions');
modules/marker.js
(MAIN.loaded = MAIN.loaded || []).push('modules');
module.exports.id = 'modules-file';
actions/marker.js
(MAIN.loaded = MAIN.loaded || []).push('actions');
schemas/marker.js
(MAIN.loaded = MAIN.loaded || []).push('schemas');
models/marker.js
(MAIN.loaded = MAIN.loaded || []).push('models');
definitions/marker.js
(MAIN.loaded = MAIN.loaded || []).push('definitions');
controllers/marker.js
(MAIN.loaded = MAIN.loaded || []).push('controllers');
middleware/marker.js
(MAIN.loaded = MAIN.loaded || []).push('middleware');
controllers/structure.js
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()
		}
	});
}