# Izrada bankarske aplikacije, dio 1: HTML predlošci i rute u web aplikaciji ```mermaid journey title Vaše Putovanje Razvoja Bankarske Aplikacije section Osnove SPA Razumjeti jedinstvene aplikacije: 3: Student Naučiti koncepte predložaka: 4: Student Savladati manipulaciju DOM-om: 4: Student section Sustavi Ruteranja Implementirati klijentsko ruteranje: 4: Student Upravljati poviješću preglednika: 5: Student Kreirati navigacijske sustave: 5: Student section Profesionalni Obrasci Izgraditi modularnu arhitekturu: 5: Student Primijeniti najbolje prakse: 5: Student Kreirati korisnička iskustva: 5: Student ``` Kada je Apollo 11-ov sustav za upravljanje navigacijom 1969. godine usmjeravao prema Mjesecu, morao je prelaziti između različitih programa bez ponovnog pokretanja cijelog sustava. Moderna web aplikacija radi slično – mijenja ono što vidite bez ponovnog učitavanja svega iz 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 trebaju promjenu. Ovaj pristup, slično kao što kontrola misije mijenja prikaze dok održava stalnu komunikaciju, stvara to fluidno iskustvo na koje smo navikli. Evo što čini razliku tako dramatičnom: | Tradicionalne višestranične aplikacije | Moderne jednostranične aplikacije | |----------------------------------------|----------------------------------| | **Navigacija** | Potpuno ponovno učitavanje stranice za svaki zaslon | Trenutna promjena sadržaja | | **Performanse** | Sporije zbog potpunog preuzimanja HTML-a | Brže s djelomičnim ažuriranjima | | **Korisničko iskustvo** | Iznenadni treptaji stranica | Glatki prijelazi kao u aplikacijama | | **Dijeljenje podataka** | Teško između stranica | Jednostavno upravljanje stanjem | | **Razvoj** | Više HTML datoteka za održavanje | Jedan HTML s dinamičkim predlošcima | **Razumijevanje evolucije:** - **Tradicionalne aplikacije** zahtijevaju zahtjeve serveru za svaku navigacijsku akciju - **Moderne jednostranične aplikacije (SPA)** se učitavaju jednom i dinamički ažuriraju sadržaj korištenjem JavaScripta - **Očekivanja korisnika** sada preferiraju trenutne i besprijekorne interakcije - **Prednosti performansi** uključuju smanjenje propusnosti i brže odzive U ovoj lekciji ćemo izraditi bankarsku aplikaciju s više zaslona koja teče besprijekorno. 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 prikazivati prema potrebi. Radit ćete s HTML predlošcima (višekratnim nacrtima za različite zaslone), JavaScript rutiranjem (sustav koji prebacuje zaslone) i povijesnim API-jem preglednika (koji omogućuje da gumb za povratak radi kako se očekuje). To su iste temeljne tehnike koje koriste okviri poput Reacta, Vuea i Angulara. Na kraju ćete imati funkcionalnu bankarsku aplikaciju koja demonstrira profesionalne principe jednostraničnih aplikacija. ```mermaid mindmap root((Single-Page Aplikacije)) Architecture Template System Client-side Routing State Management Event Handling Templates Ponovno iskoristivi Komponenti Dinamički Sadržaj Manipulacija DOM-om Prebacivanje Sadržaja Routing Upravljanje URL-om Povijest API-ja Navigacijska Logika Integracija s Preglednikom User Experience Brza Navigacija Glatke Prijelaze Konzistentno Stanje Moderni Interakcije Performance Smanjeni Zahtjevi Serveru Brže Prijelaze Stranica Učinkovita Upotreba Resursa Bolja Odzivnost ``` ## Pred-predavanja kviz [Pred-predavanja kviz](https://ff-quizzes.netlify.app/web/quiz/41) ### Što će vam trebati Trebat će nam lokalni web server za testiranje naše bankarske aplikacije – ne brinite, lakše je nego što zvuči! Ako ga već nemate postavljenog, samo instalirajte [Node.js](https://nodejs.org) i pokrenite `npx lite-server` iz vašeg projekt foldera. Ova korisna naredba pokreće lokalni server i automatski otvara vašu aplikaciju u pregledniku. ### Priprema Na vašem računalu kreirajte mapu nazvanu `bank` s datotekom pod nazivom `index.html` unutar nje. Počet ćemo od ovog HTML [boilerplatea](https://en.wikipedia.org/wiki/Boilerplate_code): ```html Bank App ``` **Evo što ovaj boilerplate pruža:** - **Uspostavlja** strukturu HTML5 dokumenta s ispravnom deklaracijom DOCTYPE-a - **Konfigurira** kodiranje znakova na UTF-8 za međunarodnu podršku teksta - **Omogućava** responzivni dizajn s meta oznakom za viewport za kompatibilnost s mobilnim uređajima - **Postavlja** opisni naslov koji se prikazuje na kartici preglednika - **Kreira** čisti body odjeljak gdje ćemo graditi 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 upravljanjem predlošcima > - **Predlošci**: Definiraju korisničko sučelje za prijavu, nadzornu ploču i druge zaslone --- ## HTML predlošci Predlošci rješavaju temeljni problem u web razvoju. Kad je Gutenberg izumio pomični tip tiskanja 1440-ih, shvatio je da umjesto izrezivanja cijelih stranica, može stvoriti višekratne blokove slova i slagati ih po potrebi. HTML predlošci funkcioniraju po istom principu – umjesto stvaranja zasebnih HTML datoteka za svaki zaslon, definirate višekratne strukture koje se prikazuju prema potrebi. ```mermaid flowchart TD A["📋 Definicija Predloška"] --> B["💬 Skriven u DOM-u"] B --> C["🔍 JavaScript Pronalazi Predložak"] C --> D["📋 Kloniraj Sadržaj Predloška"] D --> E["🔗 Priključi na Vidljivi DOM"] E --> F["👁️ Korisnik Vidi Sadržaj"] G["Predložak za Prijavu"] --> A H["Predložak Nadzorne Ploče"] --> A I["Budući Predlošci"] --> A style A fill:#e3f2fd style D fill:#e8f5e8 style F fill:#fff3e0 style B fill:#f3e5f5 ``` Zamislite predloške kao nacrte za različite dijelove vaše aplikacije. Baš kao što arhitekt stvara jedan nacrt i koristi ga više puta umjesto da ponovno crta identične sobe, mi stvaramo predloške jednom i instanciramo ih kad zatrebaju. Preglednik drži te predloške skrivene dok ih JavaScript ne aktivira. Ako želite stvoriti više zaslona za web stranicu, jedno rješenje bilo bi kreirati jednu HTML datoteku za svaki zaslon koji želite prikazati. Međutim, to rješenje dolazi s nekim neugodnostima: - Morate ponovo učitati cijeli HTML prilikom promjene zaslona, što može biti sporo. - Teško je dijeliti podatke između različitih zaslona. Drugi pristup je imati samo jednu HTML datoteku i definirati više [HTML predložaka](https://developer.mozilla.org/docs/Web/HTML/Element/template) korištenjem elementa `