# Începeți cu Total.js

> Instalați Total.js 5, creați scriptul de pornire și prima rute, acțiune și vizualizare și rulați aplicația.

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

Total.js 5 este pachetul npm `total5`. Ai nevoie de Node.js (exemplele de pe acest site rulează pe Node.js 24) și de un folder gol. Creează proiectul și instalează pachetul:

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

Scriptul de pornire este un fișier numit `index.js` în rădăcina proiectului. Încarcă framework-ul și pornește serverul:

```js
require('total5');

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

Acesta este tot codul pe care îl scrii pentru a porni. Fișierele din folderele proiectului (vezi pagina despre structura proiectului) sunt încărcate automat. Creează aceste trei fișiere.

Un **controller** declară rutele. `ROUTE('GET /')` fără handler ar afișa vizualizarea cu același nume; aici handlerul randează `views/index.html` cu un model:

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

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

O **acțiune** are propria validare. Ruta de mai sus rulează `Greet/say` cu corpul JSON al cererii, iar framework-ul respinge un corp care nu se potrivește cu `input`:

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

O **vizualizare** este HTML cu blocuri `@{...}`. `views/layout.html` învelește fiecare vizualizare, iar `@{body}` este locul vizualizării:

```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>
```

Porniți aplicația cu `node index.js`. În modul implicit `debug`, aplicația repornește când modificați un fișier și afișează adresa în terminal. Pentru modul `release`, utilizați `node index.js --release`. Ghidul modurilor de rulare explică diferențele.
