# Izrada aplikacije za bankarstvo, dio 1: HTML predlošci i rute u web aplikaciji Kada je Apollo 11-ov navigacijski računalni sustav 1969. godine vodio misiju na Mjesec, morao je prelaziti između različitih programa bez ponovnog pokretanja cijelog sustava. Moderne web aplikacije funkcioniraju na sličan način – mijenjaju ono što vidite bez ponovnog učitavanja svega od početka. To stvara glatko i responzivno iskustvo koje korisnici danas očekuju. Za razliku od tradicionalnih web stranica koje ponovno učitavaju cijele stranice za svaku interakciju, moderne web aplikacije ažuriraju samo dijelove koji se trebaju promijeniti. Ovaj pristup, slično kao što kontrolni centar prebacuje između različitih prikaza dok održava stalnu komunikaciju, stvara fluidno iskustvo na koje smo navikli. Evo što čini razliku tako dramatičnom: | Tradicionalne višestranične aplikacije | Moderne jednostranične aplikacije | |---------------------------------------|----------------------------------| | **Navigacija** | Ponovno učitavanje cijele stranice za svaki ekran | Trenutno prebacivanje sadržaja | | **Performanse** | Sporije zbog preuzimanja cijelog HTML-a | Brže s djelomičnim ažuriranjima | | **Korisničko iskustvo** | Nagli prijelazi stranica | Glatki, aplikacijski prijelazi | | **Dijeljenje podataka** | Teško između stranica | Jednostavno upravljanje stanjem | | **Razvoj** | Održavanje više HTML datoteka | Jedan HTML s dinamičnim predlošcima | **Razumijevanje evolucije:** - **Tradicionalne aplikacije** zahtijevaju zahtjeve prema serveru za svaku navigacijsku akciju - **Moderne SPA aplikacije** učitavaju se jednom i dinamički ažuriraju sadržaj koristeći JavaScript - **Očekivanja korisnika** sada favoriziraju trenutne, besprijekorne interakcije - **Prednosti performansi** uključuju smanjenu potrošnju bandwidtha i brže odgovore U ovoj lekciji izgradit ćemo aplikaciju za bankarstvo s više ekrana koji se međusobno glatko povezuju. Kao što znanstvenici koriste modularne instrumente koji se mogu rekonfigurirati za različite eksperimente, mi ćemo koristiti HTML predloške kao višekratne komponente koje se mogu prikazati po potrebi. Radit ćete s HTML predlošcima (višekratni nacrti za različite ekrane), JavaScript rutiranjem (sustav koji prebacuje između ekrana) i povijesnim API-jem preglednika (koji omogućuje da gumb za povratak radi kako treba). Ovo su iste osnovne tehnike koje koriste okviri poput Reacta, Vuea i Angulara. Na kraju, imat ćete funkcionalnu aplikaciju za bankarstvo koja demonstrira profesionalne principe jednostraničnih aplikacija. ## Kviz prije predavanja [Pre-lecture quiz](https://ff-quizzes.netlify.app/web/quiz/41) ### Što će vam trebati Trebat će nam lokalni web poslužitelj za testiranje naše aplikacije za bankarstvo – ne brinite, to je lakše nego što zvuči! Ako ga već nemate postavljenog, samo instalirajte [Node.js](https://nodejs.org) i pokrenite `npx lite-server` iz mape vašeg projekta. Ova praktična naredba pokreće lokalni poslužitelj i automatski otvara vašu aplikaciju u pregledniku. ### Priprema Na svom računalu stvorite mapu pod nazivom `bank` s datotekom pod nazivom `index.html` unutar nje. Počet ćemo s ovim HTML [boilerplateom](https://en.wikipedia.org/wiki/Boilerplate_code): ```html Bank App ``` **Što ovaj boilerplate pruža:** - **Postavlja** HTML5 strukturu dokumenta s pravilnom DOCTYPE deklaracijom - **Konfigurira** kodiranje znakova kao UTF-8 za podršku međunarodnom tekstu - **Omogućuje** responzivni dizajn s meta oznakom za kompatibilnost s mobilnim uređajima - **Postavlja** opisni naslov koji se pojavljuje na kartici preglednika - **Stvara** čistu sekciju tijela gdje ćemo izgraditi našu aplikaciju > 📁 **Pregled strukture projekta** > > **Na kraju ove lekcije, vaš projekt će sadržavati:** > ``` > bank/ > ├── index.html > ├── app.js > └── style.css > ``` > > **Odgovornosti datoteka:** > - **index.html**: Sadrži sve predloške i pruža strukturu aplikacije > - **app.js**: Upravljanje rutiranjem, navigacijom i predlošcima > - **Predlošci**: Definiraju korisničko sučelje za prijavu, nadzornu ploču i druge ekrane --- ## HTML predlošci Predlošci rješavaju temeljni problem u web razvoju. Kada je Gutenberg izumio pokretni tisak u 1440-ima, shvatio je da umjesto rezbarenja cijelih stranica može stvoriti višekratne blokove slova i rasporediti ih po potrebi. HTML predlošci funkcioniraju na istom principu – umjesto stvaranja zasebnih HTML datoteka za svaki ekran, definirate višekratne strukture koje se mogu prikazati po potrebi. Razmislite o predlošcima kao nacrtima za različite dijelove vaše aplikacije. Kao što arhitekt stvara jedan nacrt i koristi ga više puta umjesto da ponovno crta identične prostorije, mi stvaramo predloške jednom i koristimo ih po potrebi. Preglednik drži te predloške skrivenima dok ih JavaScript ne aktivira. Ako želite stvoriti više ekrana za web stranicu, jedno rješenje bilo bi stvoriti jednu HTML datoteku za svaki ekran koji želite prikazati. Međutim, ovo rješenje dolazi s nekim neugodnostima: - Morate ponovno učitati cijeli HTML prilikom prebacivanja ekrana, što može biti sporo. - Teško je dijeliti podatke između različitih ekrana. Drugi pristup je imati samo jednu HTML datoteku i definirati više [HTML predložaka](https://developer.mozilla.org/docs/Web/HTML/Element/template) koristeći element `