# Sukurkite bankinę programėlę 1 dalis: HTML šablonai ir maršrutai žiniatinklio programoje ```mermaid journey title Jūsų bankininkystės programėlės kūrimo kelionė section Vieno puslapio programėlių pagrindai Suprasti vieno puslapio programėles: 3: Student Išmokti šablonų koncepcijas: 4: Student Įvaldyti DOM manipuliaciją: 4: Student section Maršrutizavimo sistemos Įgyvendinti kliento pusės maršrutizavimą: 4: Student Tvarkyti naršyklės istoriją: 5: Student Kurti navigacijos sistemas: 5: Student section Profesinės praktikos Kurti modulinę architektūrą: 5: Student Taikyti geriausias praktikas: 5: Student Kurti naudotojo patirtis: 5: Student ``` Kai Apollo 11 navigacijos kompiuteris 1969 m. nuskrido į mėnulį, jam reikėjo pereiti tarp skirtingų programų neperkraunant visos sistemos. Šiuolaikinės žiniatinklio programos veikia panašiai – jos keičia tai, ką matote, nenaudodamos visko perkrovimo iš naujo. Tai sukuria sklandžią ir jautrią vartotojų patirtį, kurios tikimasi šiandien. Skirtingai nuo tradicinių svetainių, kurios kiekvieno veiksmo metu perkrauna visus puslapius, modernios žiniatinklio programos atnaujina tik tuos skyrius, kurie turi keistis. Šis požiūris, panašiai kaip misijos valdymo centras, kuris pereina tarp skirtingų rodinių išlaikydamas nuolatinį ryšį, sukuria tą sklandžią patirtį, kurios tikimės. Štai kas šį skirtumą daro toks drastiškas: | Tradicinės kelių puslapių programos | Šiuolaikinės vieno puslapio programos | |-------------------------------------|-------------------------------------| | **Navigacija** | Kiekvienam ekranui įkeliama visa puslapio dalis | Turinys keičiamas akimirksniu | | **Veikimo greitis** | Lėtesnis dėl pilnų HTML atsisiuntimų | Greitesnis su daliniais atnaujinimais | | **Vartotojo patirtis** | Ryškūs puslapio perkrovimai | Sklandūs, programėlės tipo perėjimai | | **Duomenų dalijimasis** | Sudėtingas tarp puslapių | Lengvas būsenos valdymas | | **Kūrimas** | Reikia daug HTML failų | Vienas HTML su dinaminiais šablonais | **Evoliucijos supratimas:** - **Tradiciinės programos** reikalauja serverio užklausų kiekvienai navigacijos veiklai - **Modernios vieno puslapio programos (SPA)** įkelia kartą ir dinamiškai atnaujina turinį naudojant JavaScript - **Vartotojai dabar** tikisi greitų ir sklandžių sąveikų - **Veiklos pranašumai** apima sumažintą pralaidumą ir greitesnį reagavimą Šioje pamokoje kursime bankinę programėlę su keliomis ekrano dalimis, kurios veikia kartu sklandžiai. Panašiai kaip mokslininkai naudoja moduliarius instrumentus, kuriuos galima keisti eksperimentams, mes naudosime HTML šablonus kaip pakartotinai naudojamus komponentus rodymui pagal poreikį. Jūs dirbsite su HTML šablonais (pakartotinai naudojamomis ekrano dalimis), JavaScript maršrutizacija (sistema, kuri pereina tarp ekranų) ir naršyklės istorijos API (kuris palaiko „atgal“ mygtuko veikimą kaip įprasta). Tai yra tos pačios pagrindinės technikos, kurias naudoja tokie karkasai kaip React, Vue ir Angular. Pamokos pabaigoje turėsite veikiančią bankinę programėlę, kuri demonstruos profesionalius vieno puslapio programų principus. ```mermaid mindmap root((Vieno puslapio programos)) Architecture Template System Client-side Routing State Management Event Handling Templates Pakartotiniai komponentai Dinaminis turinys DOM manipuliavimas Turinys keitimas Routing URL valdymas Istorijos API Navigacijos logika Naršyklės integracija User Experience Greita navigacija Sklandūs perėjimai Nuosekli būsena Šiuolaikinės sąveikos Performance Sumažinti serverio užklausas Greitesni puslapio perėjimai Efektyvus išteklių naudojimas Geresnis reagavimas ``` ## Išankstinis testas prieš paskaitą [Išankstinis testas prieš paskaitą](https://ff-quizzes.netlify.app/web/quiz/41) ### Ko reikės Reikės vietinio žiniatinklio serverio, kad galėtume išbandyti bankinę programėlę – nesijaudinkite, tai lengviau nei atrodo! Jei jo dar neturite, tiesiog įsidiekite [Node.js](https://nodejs.org) ir paleiskite `npx lite-server` savo projekto aplanke. Ši patogi komanda paleidžia vietinį serverį ir automatiškai atidaro programėlę naršyklėje. ### Paruošimas Savo kompiuteryje sukurkite aplanką pavadinimu `bank` su failu `index.html` viduje. Pradėsime nuo šio HTML [boilerplate](https://en.wikipedia.org/wiki/Boilerplate_code): ```html Bank App ``` **Štai ką suteikia šis boilerplate:** - **Nustato** HTML5 dokumento struktūrą su tinkamu DOCTYPE deklaravimu - **Nustato** simbolių kodavimą kaip UTF-8, užtikrinant pasaulinį tekstų palaikymą - **Įgalina** reaguojančio dizaino palaikymą naudojant viewport meta žymę mobiliesiems įrenginiams - **Nustato** aprašomą puslapio pavadinimą, kuris matomas naršyklės skirtuke - **Sukuria** švarų body skyrių, kuriame statysime mūsų programėlę > 📁 **Projekto struktūros peržiūra** > > **Pamokos pabaigoje jūsų projektas turės:** > ``` > bank/ > ├── index.html > ├── app.js > └── style.css > ``` > > **Failų atsakomybės:** > - **index.html**: Apima visus šablonus ir suteikia programėlės struktūrą > - **app.js**: Tvarko maršrutizaciją, navigaciją ir šablonų valdymą > - **Šablonai**: Apibrėžia vartotojo sąsają prisijungimui, informacijos suvestinei ir kitiems ekranams --- ## HTML Šablonai Šablonai sprendžia pagrindinę problemą žiniatinklio kūrime. Kai Gutenbergas 1440-aisiais išrado judamąjį raidžių spausdinimą, jis suprato, kad vietoj visų puslapių išraižymo jis gali kurti pakartotinai naudojamus raidžių blokus ir komponuoti juos pagal poreikį. HTML šablonai veikia pagal tą patį principą – vietoj atskirų HTML failų kiekvienam ekranui, jūs apibrėžiate pakartotinai naudojamas struktūras, kurios gali būti rodoma pagal poreikį. ```mermaid flowchart TD A["📋 Šablono apibrėžimas"] --> B["💬 Paslėpta DOM"] B --> C["🔍 JavaScript randa šabloną"] C --> D["📋 Nukopijuoti šablono turinį"] D --> E["🔗 Prijungti prie matomo DOM"] E --> F["👁️ Vartotojas mato turinį"] G["Prisijungimo šablonas"] --> A H["Prietaisų skydelio šablonas"] --> A I["Būsimi šablonai"] --> A style A fill:#e3f2fd style D fill:#e8f5e8 style F fill:#fff3e0 style B fill:#f3e5f5 ``` Galvokite apie šablonus kaip planus skirtingoms jūsų programėlės dalims. Kaip architektas sukūręs vieną planą, kurį naudoja kelis kartus, o ne piešia kiekvieną identišką kambarį, mes sukuriame šablonus vieną kartą ir panaudojame pagal poreikį. Naršyklė laiko šiuos šablonus paslėptus, kol JavaScript juos aktyvuoja. Jei norite sukurti kelis tinklapio ekranus, viena išeitis būtų sukurti vieną HTML failą kiekvienam rodiniui. Tačiau tai turi tam tikrų nepatogumų: - Reikia pilnai įkelti visą HTML perrašant ekraną, kas gali būti lėta. - Sudėtinga dalintis duomenimis tarp skirtingų ekranų. Kita išeitis – turėti tik vieną HTML failą ir apibrėžti kelis [HTML šablonus](https://developer.mozilla.org/docs/Web/HTML/Element/template) naudojant `