# Banking alkalmazás építése 1. rész: HTML sablonok és útvonalak egy webalkalmazásban ```mermaid journey title A banki alkalmazásod fejlesztési útja section SPA alapok Ismerd meg az egylapos alkalmazásokat: 3: Student Tanulj a sablon fogalmakról: 4: Student Sajátítsd el a DOM manipulációt: 4: Student section Útválasztó rendszerek Valósítsd meg az ügyféloldali útválasztást: 4: Student Kezeld a böngésző előzményeit: 5: Student Hozz létre navigációs rendszereket: 5: Student section Professzionális minták Építs moduláris architektúrát: 5: Student Alkalmazd a legjobb gyakorlatokat: 5: Student Hozz létre felhasználói élményeket: 5: Student ``` Amikor az Apollo 11 navigációs számítógépe 1969-ben a Holdra irányított, képesnek kellett lennie különböző programok közötti váltásra anélkül, hogy az egész rendszert újraindította volna. A modern webalkalmazások hasonlóan működnek – megváltoztatják, amit látsz, anélkül, hogy mindent újratöltenének az elejétől. Ez teremti meg a mai, sima, reszponzív élményt, amit a felhasználók elvárnak. A hagyományos weboldalakkal ellentétben, amelyek minden interakciónál az egész oldalt újratöltik, a modern webalkalmazások csak azokat a részeket frissítik, amelyekre szükség van. Ez a megközelítés, hasonlóan ahhoz, ahogy az irányítóközpont különböző kijelzők között vált, miközben folyamatos kommunikációt tart fenn, létrehozza azt a zökkenőmentes élményt, amit megszoktunk. Ez teszi a különbséget annyira látványossá: | Hagyományos többoldalas alkalmazások | Modern egylapos alkalmazások | |----------------------------|-------------------------| | **Navigáció** | Teljes oldal újratöltése minden képernyőnél | Azonnali tartalomváltás | | **Teljesítmény** | Lassabb a teljes HTML letöltés miatt | Gyorsabb részleges frissítésekkel | | **Felhasználói élmény** | Zavaró oldalvillanások | Simább, alkalmazás-szerű átmenetek | | **Adatmegosztás** | Nehézkes oldalakon keresztül | Könnyű állapotkezelés | | **Fejlesztés** | Több HTML fájl karbantartása | Egyetlen HTML dinamikus sablonokkal | **Az evolúció megértése:** - **Hagyományos alkalmazások** minden navigációs lépésnél szerverlekérést igényelnek - **Modern SPA-k** egyszer betöltődnek és dinamikusan, JavaScript segítségével frissítik a tartalmat - **A felhasználói elvárások** azonnali, zökkenőmentes interakciókat preferálnak - **Teljesítményelőnyök** csökkentett sávszélesség és gyorsabb válaszidő Ebben az órában egy banki alkalmazást építünk több, zökkenőmentesen váltakozó képernyővel. Ahogy a tudósok moduláris, újrakonfigurálható eszközöket használnak különböző kísérletekhez, úgy mi is HTML sablonokat használunk újrahasznosítható komponensként, amelyek szükség szerint megjeleníthetők. HTML sablonokkal dolgozol majd (újrahasznosítható tervek különböző képernyőkhöz), JavaScript útvonalkezeléssel (a rendszer, ami a képernyők között vált), és a böngésző történetkezelő API-jával (ami biztosítja a vissza gomb működését). Ezek az alapvető technikák használatosak olyan keretrendszerekben, mint a React, Vue és Angular. A végére egy működő banki alkalmazásod lesz, ami bemutatja a professzionális egylapos alkalmazás elveit. ```mermaid mindmap root((Egylapos alkalmazások)) Architecture Template System Client-side Routing State Management Event Handling Templates Újrahasznosítható komponensek Dinamikus tartalom DOM manipuláció Tartalomváltás Routing URL kezelés History API Navigációs logika Böngésző integráció User Experience Gyors navigáció Zökkenőmentes átmenetek Konzisztens állapot Modern interakciók Performance Csökkentett szerver kérések Gyorsabb oldalváltások Hatékony erőforrás használat Jobb válaszidő ``` ## Bevezető Kvíz [Bevezető kvíz](https://ff-quizzes.netlify.app/web/quiz/41) ### Amire Szükséged Lesz Szükségünk lesz egy helyi webszerverre, hogy kipróbáljuk banki alkalmazásunkat – ne aggódj, ez könnyebb, mint hangzik! Ha még nincs beállítva, csak telepítsd a [Node.js](https://nodejs.org)-t, majd a projekted mappájában futtasd az `npx lite-server` parancsot. Ez a hasznos parancs elindítja a helyi szervert és automatikusan megnyitja az alkalmazást a böngészőben. ### Előkészületek A számítógépeden készíts egy `bank` nevű mappát, amiben legyen egy `index.html` nevű fájl. Innen indulunk ebben a HTML [alapsablonból](https://en.wikipedia.org/wiki/Boilerplate_code): ```html Bank App ``` **Ez az alapsablon a következőket tartalmazza:** - **Létrehozza** az HTML5 dokumentumszerkezetét a megfelelő DOCTYPE deklarációval - **Beállítja** a karakterkódolást UTF-8-ra a nemzetközi szövegtámogatáshoz - **Engedélyezi** a reszponzív tervezést a viewport meta tag segítségével a mobilkompatibilitáshoz - **Megad egy** leíró címet, amely megjelenik a böngészőfülön - **Létrehoz** egy tiszta body részt, ahol az alkalmazásunkat építjük > 📁 **Projekt struktúra előnézet** > > **A tanóra végére a projekted a következőket tartalmazza:** > ``` > bank/ > ├── index.html > ├── app.js > └── style.css > ``` > > **Fájlok felelőssége:** > - **index.html**: Tartalmazza az összes sablont és biztosítja az alkalmazás szerkezetét > - **app.js**: Kezeli az útvonalakat, navigációt és a sablonokat > - **Sablonok**: Meghatározzák a bejelentkező képernyő, műszerfal és más oldal kinézetét --- ## HTML Sablonok A sablonok megoldják az egyik alapvető problémát a webfejlesztésben. Amikor Gutenberg az 1440-es években feltalálta a mozgatható betűs nyomtatást, rájött, hogy ahelyett, hogy egész oldalakat faragna, újrahasznosítható betűblokkokat készíthet és azokat szükség szerint rendezheti. Az HTML sablonok ugyanazon az elven alapulnak – ahelyett, hogy minden képernyőhöz külön HTML fájlt hoznál létre, újrahasznosítható szerkezeteket definiálsz, amelyeket szükség esetén megjeleníthetsz. ```mermaid flowchart TD A["📋 Sablon meghatározása"] --> B["💬 Elrejtve a DOM-ban"] B --> C["🔍 A JavaScript megtalálja a sablont"] C --> D["📋 Klónozza a sablon tartalmát"] D --> E["🔗 Csatlakoztatás a látható DOM-hoz"] E --> F["👁️ A felhasználó látja a tartalmat"] G["Bejelentkezési sablon"] --> A H["Irányítópult sablon"] --> A I["Jövőbeli sablonok"] --> A style A fill:#e3f2fd style D fill:#e8f5e8 style F fill:#fff3e0 style B fill:#f3e5f5 ``` Gondolj a sablonokra, mint az alkalmazás különböző részeinek tervrajzaira. Ahogy egy építész egy tervrajzot készít, és azt többször használja újra ahelyett, hogy azonos szobákat újradolgozna, mi egyszer megalkotjuk a sablonokat és szükség szerint megjelenítjük őket. A böngésző ezeket a sablonokat rejtve tartja, amíg a JavaScript aktiválja őket. Ha több képernyőt akarsz létrehozni egy weboldalon, egy megoldás lehet, hogy minden képernyőhöz külön HTML fájlt készítesz. Ennek azonban van néhány kényelmetlensége: - A képernyőváltáskor az egész HTML-t újra le kell tölteni, ami lassú lehet. - Nehéz adatokat megosztani a különböző képernyők között. Egy másik megközelítés, hogy csak egyetlen HTML fájl van, és több [HTML sablont](https://developer.mozilla.org/docs/Web/HTML/Element/template) definiálsz a `