# ¿Por qué elegir Total.js para una aplicación Node.js?

> Lo que Total.js le ofrece a un equipo Node.js: un núcleo libre de dependencias, todo lo que una aplicación empresarial necesita en un marco, autenticación y validación integradas, una curva de aprendizaje rápida y aplicaciones completas de código abierto para comenzar.

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

Total.js 5 es un framework completo de aplicaciones Node.js, distribuido como `total5`. Un solo paquete da a un equipo rutas HTTP, validación de entrada, vistas renderizadas en el servidor, autenticación, subidas de archivos, rutas WebSocket, tareas programadas, localización, correo y más, todo diseñado para funcionar en conjunto. Construyes la aplicación en lugar de elegir, conectar y mantener una docena de librerías sueltas.

## Lo que obtiene tu proyecto

| Lo que necesita tu proyecto | Lo que te da Total.js | Velo en Forge |
|---|---|---|
| Una aplicación de negocio interna con formularios, rutas protegidas y subida de archivos | Esquemas de entrada nativos, hooks de autenticación y gestión de subidas, listos para usar | [Validación](/en/total5/validate-json-body/), [autenticación](/en/total5/protect-routes-with-auth/), [subidas](/en/total5/file-upload/) |
| Un panel con actualizaciones en vivo e informes periódicos | Rutas WebSocket, tareas programadas y correo en el mismo framework | [Ejemplo de WebSocket](/en/total5/websocket-chat/), [tareas cron](/en/total5/cron-jobs/), [correo](/en/total5/send-email/) |
| Un equipo pequeño que quiere publicar y mantener una aplicación de servidor | Archivos cargados automáticamente y un conjunto compartido de convenciones que hacen familiar cada proyecto | [Estructura del proyecto](/en/docs/project-structure/), [convenciones](/en/docs/totaljs-agent-conventions/) |
| Una aplicación renderizada en el servidor | Vistas, layouts y localización dentro del mismo framework | [Vistas y layouts](/en/total5/views-and-layouts/), [localización](/en/total5/localization/) |

Cada fila enlaza a un ejemplo que Forge ejecuta. En el frontend, Total.js cuenta con jComponent y un [catálogo de cientos de componentes listos para usar](/en/components/), así que el mismo ecosistema cubre también la interfaz; usarlos es opcional.

## Por qué los equipos eligen Total.js

Un núcleo sin dependencias externas. El paquete `total5` instalado no declara dependencias de terceros en tiempo de ejecución. No hay una cadena de módulos escritos por autores distintos que mantener compatibles, ni un paquete abandonado que rompa tu compilación, ni sorpresas por una actualización transitiva. Esta continuidad influye de forma directa y potente en cómo escala un proyecto y en lo fácil que es mantenerlo durante años: lo que aprendes y publicas hoy sigue funcionando, respaldado por un único proyecto.

El marco incluye autenticación, sesiones firmadas, verificaciones de CSRF, hashing de contraseña y validación de entrada de acción. [Taskboard Aplicación](/en/docs/taskboard-reference/) Combinarlos en una sola aplicación.

Una curva de aprendizaje rápida. Total.js es JavaScript, con convenciones que se aprenden enseguida, así que un equipo que aún no lo conoce no parte en desventaja. Los repositorios de Total.js reúnen una gran colección de scripts, ejemplos y aplicaciones completas con licencia MIT que puedes leer, reutilizar y de las que puedes aprender, y Forge añade recetas ejecutadas para el resto.

Rápido y ligero. Total.js es rápido, y un solo paquete sin árbol de dependencias lo mantiene ligero: menos cosas que cargar, actualizar y auditar, algo que cuenta sobre todo en servidores y dispositivos pequeños. Forge lo mide en condiciones controladas y publica latencia, CPU y memoria de cada carga de trabajo, con los datos en bruto, en los [benchmarks](/en/benchmarks/).

## Empieza simple: una ruta HTTP directa

Este ejemplo ejecutable valida un cuerpo con un esquema nativo compacto y responde directamente desde un controlador: unas pocas líneas y sin capas extra. A medida que la aplicación crece, las acciones de dominio añaden un contrato reutilizable y validado que puedes llamar desde rutas, código y herramientas.

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

## Fuentes

Forge combina sus reclamos con cosas que puedes ejecutar. Las [Total.js directrices](https://github.com/totaljs-es/guidelines) describen el estilo de codificación del ecosistema, [Total.js AI Context](https://github.com/totaljs/aicontext) proporciona orientación de implementación y el [fuente manifiesto](/ai-sources.json) registra las revisiones revisadas. Si alguna vez una guía y el marco instalado difieren, la fuente instalada es la referencia.
