# Zacznij od Total.js

> Instaluj Total.js 5, utwórz scenariusz startowy i pierwszą trasę, działanie i widok, a następnie uruchom aplikację.

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

Total.js 5 to pakiet npm `total5`. Potrzebujesz Node.js (przykłady na tej stronie działają na Node.js 24) i pustego folderu. Utwórz projekt i zainstaluj pakiet:

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

Skrypt startowy to plik o nazwie `index.js` w katalogu głównym projektu. Ładuje framework i uruchamia serwer:

```js
require('total5');

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

To cały kod, który piszesz, aby wystartować. Pliki w folderach projektu (zobacz stronę o strukturze projektu) są ładowane automatycznie. Utwórz te trzy pliki.

**Kontroler** deklaruje trasy. `ROUTE('GET /')` bez obsługi pokazałby widok o tej samej nazwie; tutaj obsługa renderuje `views/index.html` z modelem:

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

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

**Akcja** ma własną walidację. Powyższa trasa uruchamia `Greet/say` z treścią JSON żądania, a framework odrzuca treść niezgodną z `input`:

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

**Widok** to HTML z blokami `@{...}`. `views/layout.html` otacza każdy widok, a `@{body}` to miejsce widoku:

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

Uruchom aplikację poleceniem `node index.js`. W domyślnym trybie `debug` aplikacja uruchamia się ponownie po zmianie pliku i wyświetla swój adres w terminalu. Tryb `release` uruchomisz poleceniem `node index.js --release`. Różnice opisuje przewodnik po trybach uruchamiania.
