ForgeDokumentacja
pl

Dokumentacja

Struktura projektu aplikacji Total.js 5

Total.js 5 · total5@0.0.19 guidestructurefolders Uruchomiono z Total.js 5

Aplikacja Total.js to folder ze skryptem startowym (index.js) i zestawem folderów o stałych nazwach. Nie importujesz swoich plików: przy starcie aplikacji Total.js czyta poniższe foldery i ładuje każdy znajdujący się w nich plik .js (w folderze o nazwie plugins/ ładuje index.js z każdego podfolderu). Plik jest zwykłym modułem Node.js; jeśli eksportuje funkcję install, Total.js wywołuje ją po załadowaniu pliku.

FolderCo w nim umieścić
controllers/Trasy: exports.install = function() { ROUTE(...) }.
definitions/Kod uruchamiany przy starcie, który deklaruje rzeczy globalne: akcje przez NEWACTION(), middleware, AUTH(), helpery, własne zmienne globalne.
actions/Akcje (NEWACTION()), jeśli wolisz trzymać je osobno od pozostałych definicji.
schemas/Schematy (NEWSCHEMA()) wraz z ich akcjami.
models/Ładowany przy starcie jak pozostałe; Total.js tylko ładuje pliki, ich zawartość zależy od ciebie.
middleware/Middleware (MIDDLEWARE()), ładowany po pozostałych folderach.
modules/Moduły wielokrotnego użytku; eksport może mieć id (przechowywany w MODS) i funkcję install.
extensions/Ładowany przy starcie jak pozostałe; Total.js tylko ładuje pliki, ich zawartość zależy od ciebie.
plugins/Wtyczki: jeden folder na wtyczkę z plikiem index.js.
views/Widoki HTML i layout.html.
public/Pliki statyczne serwowane bez zmian, bez żadnej trasy.
resources/Pliki tłumaczeń (.resource), zobacz przepis o lokalizacji.
jsonschemas/Definicje wejścia wielokrotnego użytku (.txt lub .json), zobacz przepis o schematach.
databases/Pliki wbudowanej bazy NoSQL i MEMORIZE().
tmp/Pliki tymczasowe i pamięć podręczna (PATH.tmp()).
logs/Pliki logów.
private/Pliki, które nie mogą być publiczne; wysyłaj je przez $.file() po sprawdzeniu.
workers/Pliki NEWTHREAD() i NEWFORK().
configPlik konfiguracji (plik, nie folder).

Helpery PATH budują ścieżkę bezwzględną każdego folderu: PATH.root(), PATH.public(), PATH.private(), PATH.tmp(), PATH.logs(), PATH.databases(). Zwracają ścieżkę bez końcowego ukośnika, a folder widoków nie ma helpera. Przykład umieszcza plik w każdym z folderów ładowanych przez Total.js i odczytuje, co zostało załadowane.

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()
		}
	});
}