# Създаване на банково приложение Част 1: HTML шаблони и маршрути в уеб приложение ```mermaid journey title Вашето пътуване в разработката на банкова приложение section Основи на SPA Разберете едностранични приложения: 3: Student Научете концепциите за шаблони: 4: Student Овладейте манипулацията на DOM: 4: Student section Системи за маршрутизация Изпълнете маршрутизация от страна на клиента: 4: Student Управлявайте историята на браузъра: 5: Student Създайте навигационни системи: 5: Student section Професионални модели Изградете модулна архитектура: 5: Student Прилагайте най-добри практики: 5: Student Създайте потребителски преживявания: 5: Student ``` Когато навигационният компютър на Apollo 11 стигна до Луната през 1969 г., той трябваше да превключва между различни програми без да рестартира цялата система. Модерните уеб приложения работят по подобен начин – те променят това, което виждате, без да презареждат всичко отначало. Това създава гладко и отзивчиво изживяване, което потребителите очакват днес. За разлика от традиционните уебсайтове, които презареждат цели страници при всяко взаимодействие, модерните уеб приложения обновяват само необходимите части. Този подход, подобно на това как командният център превключва между различни дисплеи, като същевременно поддържа постоянна комуникация, създава плавно изживяване, към което сме свикнали. Ето какво прави разликата толкова драстична: | Традиционни многослойни приложения | Модерни едностранични приложения | |----------------------------|-------------------------| | **Навигация** | Пълно презареждане на страницата за всеки екран | Моментално превключване на съдържанието | | **Производителност** | По-бавно заради пълно изтегляне на HTML | По-бързо с частични актуализации | | **Потребителско изживяване** | Раздразнителни мигания на страницата | Гладки, като приложения, преходи | | **Споделяне на данни** | Трудно между страниците | Лесно управление на състоянието | | **Разработка** | Множество HTML файлове за поддръжка | Един HTML с динамични шаблони | **Разбиране на еволюцията:** - **Традиционните приложения** изискват заявка към сървъра за всяко навигационно действие - **Модерните SPA** се зареждат веднъж и динамично обновяват съдържанието с JavaScript - **Очакванията на потребителите** са за мигновени, безпроблемни взаимодействия - **Предимствата в производителността** включват по-малка употреба на трафик и по-бързи отговори В този урок ще създадем банково приложение с няколко екрана, които плавно се свързват. Подобно на начина, по който учените използват модулни инструменти, които могат да се пренастроят за различни експерименти, ще използваме HTML шаблони като многократно използваеми компоненти, които се показват при нужда. Ще работите с HTML шаблони (многократно използваеми проектни планове за различни екрани), маршрутизация с JavaScript (системата, която превключва между екрани) и API за история на браузъра (който пази бутона назад да работи както се очаква). Това са същите основни техники, използвани от рамки като React, Vue и Angular. На края ще имате работещо банково приложение, което демонстрира професионални принципи на едностранични приложения. ```mermaid mindmap root((Едностранични приложения)) Architecture Template System Client-side Routing State Management Event Handling Templates Пренасползваеми компоненти Динамично съдържание Манипулиране на DOM Смяна на съдържание Routing Управление на URL History API Навигационна логика Интеграция с браузър User Experience Бърза навигация Плавни преходи Последователно състояние Модерни взаимодействия Performance Намалени заявки към сървъра По-бързи преходи между страници Ефективна употреба на ресурси По-добра отзивчивост ``` ## Предварителен тест преди лекцията [Предварителен тест преди лекцията](https://ff-quizzes.netlify.app/web/quiz/41) ### Какво ще ви трябва Ще ни трябва локален уеб сървър за тестване на банковото ни приложение – не се притеснявайте, по-лесно е, отколкото звучи! Ако нямате такъв, просто инсталирайте [Node.js](https://nodejs.org) и стартирайте `npx lite-server` в папката на проекта си. Тази полезна команда ще стартира локален сървър и автоматично ще отвори приложението ви в браузъра. ### Подготовка На компютъра си създайте папка на име `bank`, в която да има файл с името `index.html`. Ще започнем от този HTML [шаблон](https://en.wikipedia.org/wiki/Boilerplate_code): ```html Bank App ``` **Ето какво предоставя този шаблон:** - **Установява** структурата на HTML5 документа с правилна декларация на DOCTYPE - **Конфигурира** кодировката на символите като UTF-8 за международна поддръжка на текст - **Активира** адаптивен дизайн с viewport мета таг за съвместимост с мобилни устройства - **Задава** описателно заглавие, което се показва в таба на браузъра - **Създава** чисто тяло, в което ще изграждаме приложението си > 📁 **Преглед на структурата на проекта** > > **Към края на този урок проектът ви ще съдържа:** > ``` > bank/ > ├── index.html > ├── app.js > └── style.css > ``` > > **Отговорности на файловете:** > - **index.html**: Съдържа всички шаблони и осигурява структурата на приложението > - **app.js**: Управлява маршрутизацията, навигацията и управлението на шаблоните > - **Шаблони**: Дефинират UI за вход, табло и други екрани --- ## HTML Шаблони Шаблоните разрешават фундаментален проблем в уеб разработката. Когато Гутенберг изобретил подвижния печат през 1440-те, той осъзнал, че вместо да изрязва цели страници, може да създава многократно използваеми буквени блокчета и да ги подрежда според нуждите. HTML шаблоните работят по същия принцип – вместо да създават отделни HTML файлове за всеки екран, дефинирате многократно използваеми структури, които могат да се показват при нужда. ```mermaid flowchart TD A["📋 Дефиниция на Шаблон"] --> B["💬 Скрит в DOM"] B --> C["🔍 JavaScript Намира Шаблона"] C --> D["📋 Копиране на Съдържанието на Шаблона"] D --> E["🔗 Прикрепване към Видимия DOM"] E --> F["👁️ Потребителят Вижда Съдържанието"] G["Шаблон за Вход"] --> A H["Шаблон за Табло"] --> A I["Бъдещи Шаблони"] --> A style A fill:#e3f2fd style D fill:#e8f5e8 style F fill:#fff3e0 style B fill:#f3e5f5 ``` Мислете за шаблоните като за планове за различни части от вашето приложение. Както архитектът създава един план и го използва многократно, вместо да чертае еднакви стаи наново, така и ние създаваме шаблон веднъж и го използваме при нужда. Браузърът държи тези шаблони скрити, докато JavaScript не ги активира. Ако искате да създадете няколко екрана за уеб страница, едно решение е да направите по един HTML файл за всеки екран. Този подход обаче има неудобства: - Трябва да презареждате целия HTML при смяна на екрана, което може да бъде бавно. - Трудно е да се споделят данни между различните екрани. Друго решение е да имате само един HTML файл и да дефинирате няколко [HTML шаблона](https://developer.mozilla.org/docs/Web/HTML/Element/template) чрез елемента `