# Izdelava bančne aplikacije 1. del: HTML predloge in poti v spletni aplikaciji ```mermaid journey title Vaša pot razvoj bančne aplikacije section Osnove SPA Razumeti enostranske aplikacije: 3: Student Naučiti se konceptov predlog: 4: Student Obvladati manipulacijo DOM: 4: Student section Sistemi usmerjanja Izvesti usmerjanje na strani odjemalca: 4: Student Ravnati z zgodovino brskalnika: 5: Student Ustvariti navigacijske sisteme: 5: Student section Profesionalni vzorci Zgraditi modularno arhitekturo: 5: Student Uporabiti dobre prakse: 5: Student Ustvariti uporabniške izkušnje: 5: Student ``` Ko je Apollo 11 leta 1969 s pomočjo krmilnega računalnika navigiral do lune, je moral preklapljati med različnimi programi, ne da bi znova zagnal celoten sistem. Sodobne spletne aplikacije delujejo podobno – spremenijo, kar vidite, brez ponovnega nalaganja vsega od začetka. To omogoča gladko in odzivno izkušnjo, ki jo danes uporabniki pričakujejo. Za razliko od tradicionalnih spletnih mest, ki za vsak klik naložijo celotno stran, sodobne spletne aplikacije posodobijo le tiste dele, ki jih je treba spremeniti. Ta pristop, podobno kot nadzor misije, ki preklaplja med različnimi zasloni ob ohranjanju stalne komunikacije, ustvarja tekočo izkušnjo, ki smo je navajeni. Tukaj je, kaj povzroči tako dramatično razliko: | Tradicionalne večstranske aplikacije | Sodobne enostranske aplikacije | |--------------------------------------|--------------------------------| | **Navigacija** | Polno ponovno nalaganje vsakega zaslona | Trenutno preklapljanje vsebine | | **Zmiganljivost** | Počasnejše zaradi prenosa celotnega HTML | Hitrejše z delnimi posodobitvami | | **Uporabniška izkušnja** | Motene utripajoče strani | Gladki, aplikaciji podobni prehodi | | **Deljenje podatkov** | Težavno med stranmi | Enostavno upravljanje stanja | | **Razvoj** | Več HTML datotek za vzdrževanje | Ena HTML z dinamičnimi predlogami | **Razumevanje razvoja:** - **Tradicionalne aplikacije** zahtevajo strežniške zahtevke za vsako navigacijo - **Sodobni SPA** naložijo enkrat in dinamično posodabljajo vsebino s pomočjo JavaScript - **Pričakovanja uporabnikov** zdaj zahtevajo takojšnje in nemotene interakcije - **Prednosti zmogljivosti** vključujejo manjšo porabo pasovne širine in hitrejše odzive V tej lekciji bomo zgradili bančno aplikacijo z več zasloni, ki tekoče sodelujejo. Tako kot znanstveniki uporabljajo modularne instrumente, ki jih je mogoče preurejati za različne eksperimente, bomo uporabili HTML predloge kot ponovno uporabne komponente, ki se prikažejo po potrebi. Delali bomo s HTML predlogami (ponovno uporabnimi načrti za različne zaslone), JavaScript usmerjanjem (sistem, ki preklaplja med zasloni) in zgodovinskim API-jem brskalnika (ki ohranja gumb za nazaj delujoč). To so iste osnovne tehnike, ki jih uporabljajo ogrodja, kot so React, Vue in Angular. Na koncu boste imeli delujočo bančno aplikacijo, ki prikazuje profesionalna načela enostranske aplikacije. ```mermaid mindmap root((Enostranske aplikacije)) Architecture Template System Client-side Routing State Management Event Handling Templates Reusable Components Dynamic Content DOM Manipulation Content Switching Routing URL Management History API Navigation Logic Browser Integration User Experience Hitro Pomikanje Gladki Prehodi Dosledno Stanje Sodobne Interakcije Performance Zmanjšani Strežniški Zahtevki Hitrejši Prehodi Strani Učinkovita Uporaba Virov Boljša Odzivnost ``` ## Predpredavalni kviz [Predpredavalni kviz](https://ff-quizzes.netlify.app/web/quiz/41) ### Kaj boste potrebovali Potrebovali bomo lokalni spletni strežnik za testiranje naše bančne aplikacije – brez skrbi, lažje kot se sliši! Če še nimate nastavljenega, samo namestite [Node.js](https://nodejs.org) in zaženite `npx lite-server` v mapi projekta. Ta priročen ukaz zažene lokalni strežnik in samodejno odpre vašo aplikacijo v brskalniku. ### Priprava Na vašem računalniku ustvarite mapo z imenom `bank` in v njej datoteko z imenom `index.html`. Začeli bomo s tem HTML [boilerplate](https://en.wikipedia.org/wiki/Boilerplate_code): ```html Bank App ``` **Tukaj je, kaj ta boilerplate zagotavlja:** - **Vzpostavlja** strukturo HTML5 dokumenta s pravilno DOCTYPE deklaracijo - **Nastavi** kodiranje znakov na UTF-8 za podporo mednarodnemu besedilu - **Omogoča** odziven dizajn z oznako viewport za mobilno združljivost - **Nastavi** opisni naslov, ki se pojavi na zavihku brskalnika - **Ustvari** čisto telo, kjer bomo gradili našo aplikacijo > 📁 **Predogled strukture projekta** > > **Do konca te lekcije bo vaš projekt vseboval:** > ``` > bank/ > ├── index.html > ├── app.js > └── style.css > ``` > > **Odgovornosti datotek:** > - **index.html**: Vsebuje vse predloge in zagotavlja strukturo aplikacije > - **app.js**: Upravljanje usmerjanja, navigacije in predlog > - **Predloge**: Določajo uporabniški vmesnik za prijavo, nadzorno ploščo in druge zaslone --- ## HTML predloge Predloge rešujejo temeljni problem spletnega razvoja. Ko je Gutenberg v 1440-ih izumil tisk s premičnimi tipi, je spoznal, da namesto rezljanja celih strani lahko ustvari ponovno uporabne črkovne bloke in jih po potrebi sestavi. HTML predloge delujejo po istem principu – namesto da ustvarjate ločene HTML datoteke za vsak zaslon, definirate ponavljajoče se strukture, ki jih lahko prikažete, kadar jih potrebujete. ```mermaid flowchart TD A["📋 Definicija Predloge"] --> B["💬 Skrito v DOM-u"] B --> C["🔍 JavaScript Najde Predlogo"] C --> D["📋 Podvoji Vsebino Predloge"] D --> E["🔗 Pripni na Vidni DOM"] E --> F["👁️ Uporabnik Vidi Vsebino"] G["Predloga Prijave"] --> A H["Predloga Nadzorne Plošče"] --> A I["Prihodnje Predloge"] --> A style A fill:#e3f2fd style D fill:#e8f5e8 style F fill:#fff3e0 style B fill:#f3e5f5 ``` Predstavljajte si predloge kot načrte za različne dele vaše aplikacije. Tako kot arhitekt ustvari en načrt in ga večkrat uporabi, namesto da nariše natančno enake sobe, tudi mi ustvarimo predloge enkrat in jih po potrebi uporabimo. Brskalnik te predloge skriva, dokler jih JavaScript ne aktivira. Če želite ustvariti več zaslonov za spletno stran, bi bila ena rešitev ustvariti eno HTML datoteko za vsak zaslon, ki ga želite prikazati. Vendar ta rešitev prinaša nekaj nevšečnosti: - Ob preklopu zaslona morate ponovno naložiti celoten HTML, kar je lahko počasi. - Težko je deliti podatke med različnimi zasloni. Drugi pristop je imeti samo eno HTML datoteko in definirati več [HTML predlog](https://developer.mozilla.org/docs/Web/HTML/Element/template) z elementom `