# Commencez par Total.js

> Installez Total.js 5, créez le script de démarrage et la première route, action et vue, et exécutez l'application.

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

Total.js 5 est le paquet npm `total5`. Il vous faut Node.js (les exemples de ce site tournent sur Node.js 24) et un dossier vide. Créez le projet et installez le paquet :

```bash
mkdir hello && cd hello
npm init -y
npm install total5
```

Le script de démarrage est un fichier nommé `index.js` à la racine du projet. Il charge le framework et démarre le serveur :

```js
require('total5');

Total.run({ port: 8000 });
```

C'est tout le code à écrire pour démarrer. Les fichiers des dossiers du projet (voir la page sur la structure du projet) sont chargés automatiquement. Créez ces trois fichiers.

Un **contrôleur** déclare les routes. `ROUTE('GET /')` sans gestionnaire afficherait la vue du même nom ; ici le gestionnaire rend `views/index.html` avec un modèle :

```js controllers/index.js
exports.install = function() {
	ROUTE('GET /', home);
	ROUTE('POST /greet/ --> *Greet/say');
};

function home($) {
	$.view('index', { title: 'Hello Total.js' });
}
```

Une **action** a sa propre validation. La route ci-dessus exécute `Greet/say` avec le corps JSON de la requête, et le framework rejette un corps qui ne correspond pas à `input` :

```js definitions/greet.js
NEWACTION('Greet/say', {
	name: 'Say hello',
	input: '*name:String',
	action: function($, model) {
		$.callback({ message: 'Hello, ' + model.name + '!' });
	}
});
```

Une **vue** est du HTML avec des blocs `@{...}`. `views/layout.html` enveloppe chaque vue et `@{body}` est l'emplacement de la vue :

```html views/layout.html
<!DOCTYPE html>
<html>
<head><meta charset="utf-8" /><title>Hello</title></head>
<body>@{body}</body>
</html>
```

```html views/index.html
<h1>@{model.title}</h1>
```

Démarrez l’application avec `node index.js`. En mode `debug` (par défaut), elle redémarre lorsque vous modifiez un fichier et affiche son adresse dans le terminal. Pour le mode `release`, utilisez `node index.js --release`. Le guide des modes d’exécution explique les différences.
