# Börja med Total.js

> Installera Total.js 5, skapa startskriptet och den första rutan, åtgärd och visning, och köra appen.

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

Total.js 5 är npm-paketet `total5`. Du behöver Node.js (exemplen på den här webbplatsen körs på Node.js 24) och en tom mapp. Skapa projektet och installera paketet:

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

Startskriptet är en fil som heter `index.js` i projektets rot. Det laddar ramverket och startar servern:

```js
require('total5');

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

Det är all kod du skriver för att starta. Filerna i projektets mappar (se sidan om projektstrukturen) laddas automatiskt. Skapa dessa tre filer.

En **controller** deklarerar routerna. `ROUTE('GET /')` utan hanterare skulle visa vyn med samma namn; här renderar hanteraren `views/index.html` med en modell:

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

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

En **åtgärd** har sin egen validering. Routen ovan kör `Greet/say` med JSON-kroppen från begäran, och ramverket avvisar en kropp som inte matchar `input`:

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

En **vy** är HTML med `@{...}`-block. `views/layout.html` omsluter varje vy och `@{body}` är vyns plats:

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

Starta programmet med `node index.js`. I standardläget `debug` startar programmet om när du ändrar en fil och visar sin adress i terminalen. Använd `node index.js --release` för läget `release`. Guiden till körlägen beskriver skillnaderna.
