ForgeDocumentation
fr

Documentation

La structure du projet d'une application Total.js 5

Total.js 5 · total5@0.0.19 guidestructurefolders Exécutée avec Total.js 5

Une application Total.js est un dossier avec un script de démarrage (index.js) et un ensemble de dossiers aux noms fixes. Vous n'importez pas vos fichiers : au démarrage, Total.js lit les dossiers ci-dessous et charge chaque fichier .js qu'ils contiennent (dans un dossier nommé plugins/, il charge le index.js de chaque sous-dossier). Un fichier est un module Node.js normal ; s'il exporte une fonction install, Total.js l'appelle après avoir chargé le fichier.

DossierCe qu'il contient
controllers/Routes : exports.install = function() { ROUTE(...) }.
definitions/Code exécuté au démarrage qui déclare des éléments globaux : actions avec NEWACTION(), middleware, AUTH(), helpers, vos propres globales.
actions/Actions (NEWACTION()), si vous préférez les séparer des autres définitions.
schemas/Schémas (NEWSCHEMA()) avec leurs actions.
models/Chargé au démarrage comme les autres ; Total.js ne fait que charger les fichiers, leur contenu vous appartient.
middleware/Middleware (MIDDLEWARE()), chargé après les autres dossiers.
modules/Modules réutilisables ; l'export peut avoir un id (conservé dans MODS) et une fonction install.
extensions/Chargé au démarrage comme les autres ; Total.js ne fait que charger les fichiers, leur contenu vous appartient.
plugins/Plugins : un dossier par plugin avec un index.js.
views/Vues HTML et le layout.html.
public/Fichiers statiques servis tels quels, sans aucune route.
resources/Fichiers de traduction (.resource), voir la recette de localisation.
jsonschemas/Définitions d'entrée réutilisables (.txt ou .json), voir la recette des schémas.
databases/Fichiers de la base NoSQL intégrée et de MEMORIZE().
tmp/Fichiers temporaires et caches (PATH.tmp()).
logs/Fichiers de journal.
private/Fichiers qui ne doivent pas être publics ; envoyez-les avec $.file() après une vérification.
workers/Fichiers de NEWTHREAD() et NEWFORK().
configLe fichier de configuration (un fichier, pas un dossier).

Les helpers de PATH construisent le chemin absolu de chaque dossier : PATH.root(), PATH.public(), PATH.private(), PATH.tmp(), PATH.logs(), PATH.databases(). Ils renvoient le chemin sans barre oblique finale, et le dossier des vues n'a pas de helper. L'exemple place un fichier dans chacun des dossiers que Total.js charge et relit ce qui a été chargé.

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