# Perché scegliere Total.js per un'applicazione Node.js

> Cosa offre Total.js al team Node.js: un nucleo privo di dipendenze, tutto ciò di cui un'applicazione aziendale ha bisogno in un unico framework, autenticazione e convalida integrate, una curva di apprendimento rapida e applicazioni open source complete da cui iniziare.

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

Total.js 5 è un framework applicativo completo per Node.js, distribuito come `total5`. Un solo pacchetto offre a un team route HTTP, validazione dell'input, viste renderizzate sul server, autenticazione, upload, route WebSocket, job pianificati, localizzazione, e-mail e altro, tutto progettato per funzionare insieme. Costruisci l'applicazione invece di scegliere, collegare e mantenere una dozzina di librerie separate.

## Cosa ottiene il tuo progetto

| Di cosa ha bisogno il tuo progetto | Cosa ti dà Total.js | Guardalo in Forge |
|---|---|---|
| Un'applicazione di business interna con moduli, route protette e upload di file | Schemi di input nativi, hook di autenticazione e gestione degli upload, pronti all'uso | [Validazione](/en/total5/validate-json-body/), [autenticazione](/en/total5/protect-routes-with-auth/), [upload](/en/total5/file-upload/) |
| Una dashboard con aggiornamenti in tempo reale e report periodici | Route WebSocket, job pianificati ed e-mail nello stesso framework | [Esempio WebSocket](/en/total5/websocket-chat/), [job cron](/en/total5/cron-jobs/), [e-mail](/en/total5/send-email/) |
| Un piccolo team che vuole rilasciare e mantenere un'applicazione server | File caricati automaticamente e un insieme condiviso di convenzioni che rendono familiare ogni progetto | [Struttura del progetto](/en/docs/project-structure/), [convenzioni](/en/docs/totaljs-agent-conventions/) |
| Un'applicazione renderizzata sul server | Viste, layout e localizzazione nello stesso framework | [Viste e layout](/en/total5/views-and-layouts/), [localizzazione](/en/total5/localization/) |

Ogni riga rimanda a un esempio che Forge esegue. Sul frontend, Total.js offre jComponent e un [catalogo di centinaia di componenti pronti](/en/components/), così lo stesso ecosistema copre anche l'interfaccia; usarli è facoltativo.

## Perché i team scelgono Total.js

Un nucleo senza dipendenze esterne. Il pacchetto `total5` installato non dichiara dipendenze di runtime di terze parti. Non c'è una catena di moduli scritti da autori diversi da mantenere compatibili, nessun pacchetto abbandonato che blocca la tua build, nessuna sorpresa da un aggiornamento transitivo. Questa continuità ha un effetto diretto e potente su quanto bene un progetto scala e su quanto è facile mantenerlo negli anni: ciò che impari e rilasci oggi continua a funzionare, sostenuto da un solo progetto.

Il framework comprende l'autenticazione, le sessioni firmate, i controlli CSRF, lo scripto password hashing e la validazione delle entrate di azione. [Taskboard applicazione di riferimento](/en/docs/taskboard-reference/) Combinare in una sola applicazione.

Una curva di apprendimento rapida. Total.js è JavaScript, con convenzioni che si imparano in fretta, quindi un team che non lo conosce ancora non parte svantaggiato. I repository di Total.js contengono una grande raccolta di script, esempi e applicazioni complete con licenza MIT che puoi leggere, riutilizzare e da cui puoi imparare, e Forge aggiunge ricette eseguite per il resto.

Veloce e leggero. Total.js è veloce, e un solo pacchetto senza albero di dipendenze lo mantiene leggero: meno cose da caricare, aggiornare e verificare, il che conta soprattutto su piccoli server e piccoli dispositivi. Forge lo misura in condizioni controllate e pubblica latenza, CPU e memoria per ogni carico, con i dati grezzi, nei [benchmark](/en/benchmarks/).

## Parti semplice: una route HTTP diretta

Questo esempio eseguibile valida un body con uno schema nativo compatto e risponde direttamente da un controller: poche righe e nessun livello aggiuntivo. Man mano che l'applicazione cresce, le azioni di dominio aggiungono un contratto riutilizzabile e validato che puoi chiamare da route, codice e strumenti.

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

## Fonti

Forge abbina le sue affermazioni a cose che puoi eseguire. Le [Total.js linee guida](https://github.com/totaljs-es/guidelines) descrivono lo stile di codifica dell'ecosistema, [Total.js AI Context](https://github.com/totaljs/aicontext) fornisce una guida all'implementazione e il [fonte manifest](/ai-sources.json) registra le revisioni esaminate. Se una guida e il framework installato differiscono, la fonte installata è il riferimento.
