# Vytvorenie bankovej aplikácie časť 1: HTML šablóny a trasy vo webovej aplikácii ```mermaid journey title Vaša cesta vývoja bankovej aplikácie section Základy SPA Pochopiť jednotnú stránkovú aplikáciu: 3: Student Naučiť sa koncepty šablón: 4: Student Ovládnuť manipuláciu s DOM: 4: Student section Smerovacie systémy Implementovať smerovanie na strane klienta: 4: Student Spravovať históriu prehliadača: 5: Student Vytvoriť navigačné systémy: 5: Student section Profesionálne vzory Vybudovať modulárnu architektúru: 5: Student Použiť najlepšie praktiky: 5: Student Vytvoriť používateľské zážitky: 5: Student ``` Keď navigačný počítač Apollo 11 v roku 1969 smeroval na Mesiac, musel prepínať medzi rôznymi programami bez reštartu celého systému. Moderné webové aplikácie fungujú podobne – menia to, čo vidíte, bez znovunačítania všetkého od začiatku. To prináša plynulý a citlivý zážitok, aký dnes používatelia očakávajú. Na rozdiel od tradičných webových stránok, ktoré pri každej interakcii načítajú celú stránku znova, moderné webové aplikácie aktualizujú iba časti, ktoré je potrebné zmeniť. Tento prístup, podobne ako misijné velenie prepínajúce medzi rôznymi displejmi a zároveň udržiavajúce neustálu komunikáciu, vytvára plynulý zážitok, na ktorý sme si zvykli. Tu je, čo robí rozdiel tak dramatickým: | Tradičné viacstranové aplikácie | Moderné jedno-stranové aplikácie | |---------------------------------|---------------------------------| | **Navigácia** | Úplné načítanie stránky pre každú obrazovku | Okamžité prepínanie obsahu | | **Výkon** | Pomalejšie kvôli kompletnému stiahnutiu HTML | Rýchlejšie s čiastočnými aktualizáciami | | **Používateľský zážitok** | Trhané bliknutie stránok | Plynulé, aplikácii podobné prechody | | **Zdieľanie údajov** | Obtiažne medzi stránkami | Jednoduché riadenie stavu | | **Vývoj** | Viac HTML súborov na údržbu | Jediný HTML s dynamickými šablónami | **Pochopenie vývoja:** - **Tradičné aplikácie** vyžadujú požiadavky na server pri každej navigácii - **Moderné SPA** sa načítajú raz a obsah aktualizujú dynamicky pomocou JavaScriptu - **Pokiaľ ide o očakávania používateľov**, preferujú okamžité, bezproblémové interakcie - **Výhody výkonu** zahŕňajú zníženú spotrebu šírky pásma a rýchlejšie odpovede V tejto lekcii vytvoríme bankovú aplikáciu s viacerými obrazovkami, ktoré plynulo spolupracujú. Rovnako ako vedci používajú modulárne prístroje, ktoré možno preexperimentovať na rôzne experimenty, použijeme HTML šablóny ako opakovane použiteľné komponenty, ktoré môžu byť zobrazené podľa potreby. Budete pracovať s HTML šablónami (opakovane použiteľné vzory pre rôzne obrazovky), JavaScriptovým smerovaním (systém, ktorý prepína medzi obrazovkami) a rozhraním prehliadača pre históriu (ktoré zabezpečuje správnu funkciu tlačidla späť). Toto sú rovnaké základné techniky, ktoré používajú frameworky ako React, Vue a Angular. Na konci budete mať funkčnú bankovú aplikáciu, ktorá demonštruje profesionálne princípy jedno-stranovej aplikácie. ```mermaid mindmap root((Single-Page Applications)) Architecture Template System Client-side Routing State Management Event Handling Templates Opakovane použiteľné komponenty Dynamický obsah Manipulácia s DOM Prepínanie obsahu Routing Správa URL História API Navigačná logika Integrácia prehliadača User Experience Rýchla navigácia Plynulé prechody Konzistentný stav Moderné interakcie Performance Znížené požiadavky na server Rýchlejšie prechody stránok Efektívne využitie zdrojov Lepšia odozva ``` ## Prednáškový kvíz [Prednáškový kvíz](https://ff-quizzes.netlify.app/web/quiz/41) ### Čo budete potrebovať Budeme potrebovať lokálny webový server na testovanie našej bankovej aplikácie – nebojte sa, je to jednoduchšie, než to znie! Ak ešte nemáte server nastavený, jednoducho si nainštalujte [Node.js](https://nodejs.org) a spustite `npx lite-server` zo svojho projektového priečinka. Tento užitočný príkaz spustí lokálny server a automaticky otvorí vašu aplikáciu v prehliadači. ### Príprava Na vašom počítači vytvorte priečinok s názvom `bank` a vo vnútri súbor `index.html`. Začneme touto HTML [vzorovou štruktúrou](https://en.wikipedia.org/wiki/Boilerplate_code): ```html Bank App ``` **Čo táto východisková štruktúra poskytuje:** - **Zavádza** štruktúru dokumentu HTML5 so správnym vyhlásením DOCTYPE - **Nastavuje** kódovanie znakov na UTF-8 pre medzinárodnú podporu textu - **Umožňuje** responzívny dizajn pomocou meta značky viewport pre kompatibilitu s mobilom - **Nastavuje** popisný názov, ktorý sa zobrazí na záložke prehliadača - **Vytvára** čisté telo dokumentu, kde budeme budovať našu aplikáciu > 📁 **Náhľad štruktúry projektu** > > **Na konci tejto lekcie bude váš projekt obsahovať:** > ``` > bank/ > ├── index.html > ├── app.js > └── style.css > ``` > > **Zodpovednosť súborov:** > - **index.html**: Obsahuje všetky šablóny a poskytuje štruktúru aplikácie > - **app.js**: Riadi smerovanie, navigáciu a správu šablón > - **Šablóny**: Definujú používateľské rozhranie pre prihlasovanie, dashboard a ďalšie obrazovky --- ## HTML šablóny Šablóny riešia základný problém vo webovom vývoji. Keď Gutenberg vynašiel pohyblivú tlač v 1440. rokoch, uvedomil si, že namiesto vyrezávania celých stránok môže vytvárať opakovane použiteľné písmenkové bloky a usporadúvať ich podľa potreby. HTML šablóny fungujú na rovnakom princípe – namiesto vytvárania samostatných HTML súborov pre každú obrazovku definujete opakovane použiteľné štruktúry, ktoré sa môžu zobraziť podľa potreby. ```mermaid flowchart TD A["📋 Definícia šablóny"] --> B["💬 Skryté v DOM"] B --> C["🔍 JavaScript nájde šablónu"] C --> D["📋 Klonovanie obsahu šablóny"] D --> E["🔗 Pripojenie do viditeľného DOM"] E --> F["👁️ Používateľ vidí obsah"] G["Prihlasovacia šablóna"] --> A H["Šablóna panelu"] --> A I["Budúce šablóny"] --> A style A fill:#e3f2fd style D fill:#e8f5e8 style F fill:#fff3e0 style B fill:#f3e5f5 ``` Predstavte si šablóny ako plány pre rôzne časti vašej aplikácie. Rovnako ako architekt vytvára jeden plán a používa ho viackrát namiesto prekrikovania tých istých miestností, my vytvárame šablóny raz a následne ich podľa potreby vytvárame. Prehliadač tieto šablóny drží skryté, až kým ich neaktivuje JavaScript. Ak chcete vytvoriť viacero obrazoviek pre webovú stránku, jedným riešením je vytvoriť jeden HTML súbor pre každú obrazovku, ktorú chcete zobraziť. Toto riešenie však prináša určité nevýhody: - Pri prepínaní obrazoviek je potrebné načítať celé HTML znova, čo môže byť pomalé. - Je ťažké zdieľať údaje medzi rôznymi obrazovkami. Iná možnosť je mať len jeden HTML súbor a definovať viacero [HTML šablón](https://developer.mozilla.org/docs/Web/HTML/Element/template) pomocou prvku `