# Pourquoi choisir Total.js pour une application Node.js

> Ce que Total.js offre à une équipe Node.js : un noyau sans dépendance, tout ce dont une application métier a besoin dans un seul cadre, une authentification et une validation intégrées, une courbe d'apprentissage rapide et des applications open source complètes pour démarrer.

Framework: total5
Product: Total.js 5 (total5@0.0.19)
Language: fr
Content-SHA256: f6c7a7ee372a18c7465d764d86b63771c0669421d2ff46089fd4eeca3791f004
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: total5-installed@total5@0.0.19
Review: not-recorded

Total.js 5 est un framework d'application Node.js complet, distribué sous le nom `total5`. Un seul paquet donne à une équipe des routes HTTP, la validation des entrées, des vues rendues côté serveur, l'authentification, les téléversements, des routes WebSocket, des tâches planifiées, la localisation, l'e-mail et plus encore, le tout conçu pour fonctionner ensemble. Vous construisez l'application au lieu de choisir, câbler et maintenir une douzaine de bibliothèques séparées.

## Ce que reçoit votre projet

| Ce dont votre projet a besoin | Ce que Total.js vous donne | Voyez-le dans Forge |
|---|---|---|
| Une application métier interne avec formulaires, routes protégées et téléversements de fichiers | Schémas d'entrée natifs, hooks d'authentification et gestion des téléversements, prêts à l'emploi | [Validation](/en/total5/validate-json-body/), [authentification](/en/total5/protect-routes-with-auth/), [téléversements](/en/total5/file-upload/) |
| Un tableau de bord avec mises à jour en direct et rapports périodiques | Routes WebSocket, tâches planifiées et e-mail dans le même framework | [Exemple WebSocket](/en/total5/websocket-chat/), [tâches cron](/en/total5/cron-jobs/), [e-mail](/en/total5/send-email/) |
| Une petite équipe qui veut livrer et maintenir une application serveur | Fichiers chargés automatiquement et un ensemble commun de conventions qui rendent chaque projet familier | [Structure du projet](/en/docs/project-structure/), [conventions](/en/docs/totaljs-agent-conventions/) |
| Une application rendue côté serveur | Vues, layouts et localisation dans le même framework | [Vues et layouts](/en/total5/views-and-layouts/), [localisation](/en/total5/localization/) |

Chaque ligne renvoie à un exemple que Forge exécute. Côté frontend, Total.js propose jComponent et un [catalogue de centaines de composants prêts à l'emploi](/en/components/) : le même écosystème couvre aussi l'interface ; leur usage est facultatif.

## Pourquoi les équipes choisissent Total.js

Un cœur sans dépendances externes. Le paquet `total5` installé ne déclare aucune dépendance d'exécution tierce. Pas de chaîne de modules écrits par des auteurs différents à garder compatibles, pas de paquet abandonné qui bloque votre build, pas de surprise due à une mise à jour transitive. Cette continuité a un effet direct et puissant sur la capacité d'un projet à passer à l'échelle et sur la facilité de le maintenir pendant des années : ce que vous apprenez et livrez aujourd'hui continue de fonctionner, porté par un seul projet.

Le cadre inclut l'authentification, les sessions signées, les vérifications CSRF, le hashing de mot de passe scripte et la validation des entrées d'action. [L’application de référence](/en/docs/taskboard-reference/) Combiner dans une seule application.

Une courbe d'apprentissage rapide. Total.js, c'est du JavaScript, avec des conventions qu'on prend vite en main : une équipe qui ne le connaît pas encore n'est pas désavantagée. Les dépôts de Total.js contiennent une grande collection de scripts, d'exemples et d'applications complètes sous licence MIT que vous pouvez lire, réutiliser et dont vous pouvez apprendre, et Forge ajoute des recettes exécutées pour le reste.

Rapide et léger. Total.js est rapide, et un seul paquet sans arbre de dépendances le garde léger : moins de choses à charger, mettre à jour et auditer, ce qui compte surtout sur les petits serveurs et petits appareils. Forge le mesure dans des conditions contrôlées et publie latence, CPU et mémoire pour chaque charge, avec les données brutes, dans les [benchmarks](/en/benchmarks/).

## Commencez simple : une route HTTP directe

Cet exemple exécutable valide un corps avec un schéma natif compact et répond directement depuis un contrôleur : quelques lignes et aucune couche supplémentaire. Quand l'application grandit, les actions de domaine ajoutent un contrat réutilisable et validé que vous pouvez appeler depuis des routes, du code et des outils.

```js controllers/contacts.js
var schema = NEWSCHEMA('ContactsInput', '*name:String');

exports.install = function() {
	ROUTE('GET /health/', health);
	ROUTE('POST /contacts/', create);
};

function health($) {
	$.json({ ok: true });
}

function create($) {
	var result = schema.transform($.body);
	if (result.error) {
		$.response.status = 400;
		$.json({ error: 'invalid' });
		return;
	}
	$.response.status = 201;
	$.json({ name: result.response.name });
}
```

##Sources

Forge associe ses revendications à des choses que vous pouvez exécuter. Les [directives Total.js](https://github.com/totaljs-es/guidelines) décrivent le style de codage de l'écosystème, [Total.js AI Context](https://github.com/totaljs/aicontext) fournit des conseils de mise en œuvre et la [source manifest](/ai-sources.json) enregistre les révisions examinées. Si un guide et le framework installé diffèrent, la source installée est la référence.
