ForgeDocumentação
pt

Documentação

Estrutura do projeto de um aplicativo Total.js 5

Total.js 5 · total5@0.0.19 guidestructurefolders Executada com o Total.js 5

Uma aplicação Total.js é uma pasta com um script de arranque (index.js) e um conjunto de pastas com nomes fixos. Não importa os seus ficheiros: quando a aplicação arranca, o Total.js lê as pastas abaixo e carrega cada ficheiro .js que contêm (numa pasta chamada plugins/ carrega o index.js de cada subpasta). Um ficheiro é um módulo Node.js normal; se exportar uma função install, o Total.js chama-a depois de carregar o ficheiro.

PastaO que contém
controllers/Rotas: exports.install = function() { ROUTE(...) }.
definitions/Código que corre no arranque e declara coisas globais: ações com NEWACTION(), middleware, AUTH(), helpers, os seus próprios globais.
actions/Ações (NEWACTION()), quando prefere tê-las separadas das outras definições.
schemas/Esquemas (NEWSCHEMA()) com as suas ações.
models/Carregada no arranque como as outras; o Total.js apenas carrega os ficheiros, o que contêm fica ao seu critério.
middleware/Middleware (MIDDLEWARE()), carregado depois das outras pastas.
modules/Módulos reutilizáveis; a exportação pode ter um id (guardado em MODS) e uma função install.
extensions/Carregada no arranque como as outras; o Total.js apenas carrega os ficheiros, o que contêm fica ao seu critério.
plugins/Plugins: uma pasta por plugin com um index.js.
views/Vistas HTML e o layout.html.
public/Ficheiros estáticos servidos tal como estão, sem qualquer rota.
resources/Ficheiros de tradução (.resource), veja a receita de localização.
jsonschemas/Definições de entrada reutilizáveis (.txt ou .json), veja a receita de esquemas.
databases/Ficheiros da base de dados NoSQL integrada e de MEMORIZE().
tmp/Ficheiros temporários e caches (PATH.tmp()).
logs/Ficheiros de registo.
private/Ficheiros que não devem ser públicos; envie-os com $.file() depois de uma verificação.
workers/Ficheiros de NEWTHREAD() e NEWFORK().
configO ficheiro de configuração (um ficheiro, não uma pasta).

Os helpers de PATH constroem o caminho absoluto de cada pasta: PATH.root(), PATH.public(), PATH.private(), PATH.tmp(), PATH.logs(), PATH.databases(). Devolvem o caminho sem barra final, e a pasta das vistas não tem helper. O exemplo coloca um ficheiro em cada uma das pastas que o Total.js carrega e lê de volta o que foi carregado.

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