# Zbuduj aplikację bankową Część 1: Szablony HTML i trasy w aplikacji internetowej ```mermaid journey title Twoja podróż w tworzeniu aplikacji bankowej section Podstawy SPA Zrozumienie aplikacji jednostronicowych: 3: Student Nauka koncepcji szablonów: 4: Student Opanowanie manipulacji DOM: 4: Student section Systemy trasowania Implementacja trasowania po stronie klienta: 4: Student Obsługa historii przeglądarki: 5: Student Tworzenie systemów nawigacji: 5: Student section Wzorce profesjonalne Budowa modularnej architektury: 5: Student Stosowanie najlepszych praktyk: 5: Student Tworzenie doświadczeń użytkownika: 5: Student ``` Kiedy komputer pokładowy Apollo 11 nawigował do księżyca w 1969 roku, musiał przełączać się między różnymi programami bez ponownego uruchamiania całego systemu. Nowoczesne aplikacje internetowe działają podobnie – zmieniają to, co widzisz, bez przeładowywania wszystkiego od początku. To tworzy płynne, responsywne doświadczenie, którego użytkownicy oczekują dziś. W przeciwieństwie do tradycyjnych stron internetowych, które przeładowują całe strony przy każdej interakcji, nowoczesne aplikacje webowe aktualizują tylko te części, które wymagają zmiany. Takie podejście, podobnie jak kontrola misji przełączająca się między różnymi wyświetlaczami, przy zachowaniu stałej komunikacji, tworzy to płynne doświadczenie, do którego się przyzwyczailiśmy. Oto co sprawia, że różnica jest tak dramatyczna: | Tradycyjne aplikacje wielostronicowe | Nowoczesne aplikacje jednostronicowe | |----------------------------|-------------------------| | **Nawigacja** | Pełne przeładowanie strony dla każdego ekranu | Natychmiastowa zmiana treści | | **Wydajność** | Wolniejsze ze względu na pełne pobieranie HTML | Szybsze dzięki częściowym aktualizacjom | | **Doświadczenie użytkownika** | Drastyczne błyski stron | Płynne, aplikacyjne przejścia | | **Udostępnianie danych** | Trudne między stronami | Łatwe zarządzanie stanem | | **Tworzenie** | Wiele plików HTML do utrzymania | Jeden HTML z dynamicznymi szablonami | **Zrozumienie ewolucji:** - **Tradycyjne aplikacje** wymagają zapytań serwera przy każdej nawigacji - **Nowoczesne SPA** ładują się raz i dynamicznie aktualizują treść za pomocą JavaScriptu - **Oczekiwania użytkowników** teraz preferują natychmiastowe, bezproblemowe interakcje - **Korzyści wydajności** obejmują zmniejszone zużycie pasma i szybsze odpowiedzi W tej lekcji zbudujemy aplikację bankową z wieloma ekranami płynnie ze sobą współpracującymi. Tak jak naukowcy używają modułowych instrumentów, które można rekonfigurować do różnych eksperymentów, my użyjemy szablonów HTML jako wielokrotnie wykorzystywanych komponentów, które można wyświetlać według potrzeby. Będziesz pracować z szablonami HTML (wielokrotnego użytku wzorcami dla różnych ekranów), routingiem w JavaScript (systemem przełączającym się między ekranami) oraz historią przeglądarki API (która sprawia, że działa przycisk wstecz). To te same fundamentalne techniki stosowane w frameworkach takich jak React, Vue oraz Angular. Pod koniec będziesz mieć działającą aplikację bankową demonstrującą profesjonalne zasady aplikacji jednostronicowej. ```mermaid mindmap root((Single-Page Applications)) 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 Szybka Nawigacja Płynne Przejścia Spójny Stan Nowoczesne Interakcje Performance Zmniejszona Liczba Żądań do Serwera Szybsze Przejścia Stron Efektywne Wykorzystanie Zasobów Lepsza Responsywność ``` ## Quiz przed wykładem [Quiz przed wykładem](https://ff-quizzes.netlify.app/web/quiz/41) ### Czego będziesz potrzebować Potrzebujemy lokalnego serwera WWW do testowania naszej aplikacji bankowej – nie martw się, to łatwiejsze niż brzmi! Jeśli nie masz go jeszcze skonfigurowanego, po prostu zainstaluj [Node.js](https://nodejs.org) i uruchom `npx lite-server` z folderu projektu. To polecenie szybko uruchomi lokalny serwer i automatycznie otworzy Twoją aplikację w przeglądarce. ### Przygotowanie Na swoim komputerze utwórz folder o nazwie `bank` z plikiem `index.html` w środku. Zaczniemy od tego szablonu HTML [boilerplate](https://en.wikipedia.org/wiki/Boilerplate_code): ```html Bank App ``` **Oto co dostarcza ten boilerplate:** - **Ustanawia** strukturę dokumentu HTML5 z odpowiednią deklaracją DOCTYPE - **Konfiguruje** kodowanie znaków jako UTF-8 dla wsparcia tekstu międzynarodowego - **Aktywuje** responsywny design za pomocą meta tagu viewport dla kompatybilności mobilnej - **Ustawia** opisowy tytuł pojawiający się na karcie przeglądarki - **Tworzy** czystą sekcję body, gdzie będziemy budować naszą aplikację > 📁 **Podgląd struktury projektu** > > **Na koniec tej lekcji w Twoim projekcie znajdą się:** > ``` > bank/ > ├── index.html > ├── app.js > └── style.css > ``` > > **Odpowiedzialność plików:** > - **index.html**: Zawiera wszystkie szablony i dostarcza strukturę aplikacji > - **app.js**: Obsługuje routing, nawigację i zarządzanie szablonami > - **Szablony**: Definiują interfejs użytkownika dla logowania, panelu i innych ekranów --- ## Szablony HTML Szablony rozwiązują podstawowy problem w tworzeniu stron internetowych. Gdy Gutenberg wynalazł ruchomą czcionkę w latach 40. XV wieku, zauważył, że zamiast tworzyć całe strony ręcznie, może tworzyć wielokrotnie używalne bloki liter i układać je według potrzeb. Szablony HTML działają według tej samej zasady – zamiast tworzyć oddzielne pliki HTML dla każdego ekranu, definiujesz wielokrotnego użytku struktury, które można wyświetlać w razie potrzeby. ```mermaid flowchart TD A["📋 Definicja szablonu"] --> B["💬 Ukryte w DOM"] B --> C["🔍 JavaScript znajduje szablon"] C --> D["📋 Klonuj zawartość szablonu"] D --> E["🔗 Dołącz do widocznego DOM"] E --> F["👁️ Użytkownik widzi zawartość"] G["Szablon logowania"] --> A H["Szablon pulpitu"] --> A I["Przyszłe szablony"] --> A style A fill:#e3f2fd style D fill:#e8f5e8 style F fill:#fff3e0 style B fill:#f3e5f5 ``` Pomyśl o szablonach jak o planach różnych części Twojej aplikacji. Tak jak architekt tworzy jeden plan i używa go wielokrotnie zamiast rysować identyczne pokoje, my tworzymy szablony raz i wykorzystujemy je według potrzeby. Przeglądarka trzyma te szablony ukryte dopóki JavaScript ich nie aktywuje. Jeśli chcesz stworzyć wiele ekranów dla strony internetowej, jedną z możliwości byłoby tworzenie po jednym pliku HTML dla każdego ekranu. Jednak takie rozwiązanie ma kilka niedogodności: - Musisz przeładowywać cały HTML podczas przełączania ekranu, co może być wolne. - Trudno jest współdzielić dane między różnymi ekranami. Innym podejściem jest posiadanie tylko jednego pliku HTML i zdefiniowanie wielu [szablonów HTML](https://developer.mozilla.org/docs/Web/HTML/Element/template) za pomocą elementu `