# Създаване на банково приложение, част 1: HTML шаблони и маршрути в уеб приложение Когато компютърът за управление на Apollo 11 навигираше към Луната през 1969 г., той трябваше да превключва между различни програми, без да рестартира цялата система. Съвременните уеб приложения работят по подобен начин – те променят това, което виждате, без да презареждат всичко отначало. Това създава гладко и отзивчиво изживяване, което потребителите очакват днес. За разлика от традиционните уебсайтове, които презареждат цели страници при всяко взаимодействие, модерните уеб приложения актуализират само частите, които се нуждаят от промяна. Този подход, подобно на начина, по който контролният център превключва между различни дисплеи, като същевременно поддържа постоянна комуникация, създава плавното изживяване, което сме свикнали да очакваме. Ето какво прави разликата толкова драматична: | Традиционни многостранични приложения | Модерни едностранични приложения | |---------------------------------------|----------------------------------| | **Навигация** | Презареждане на цялата страница за всеки екран | Моментално превключване на съдържанието | | **Производителност** | По-бавно поради изтегляне на цял HTML | По-бързо с частични актуализации | | **Потребителско изживяване** | Рязко премигване на страниците | Плавни, подобни на приложение преходи | | **Споделяне на данни** | Трудно между страниците | Лесно управление на състоянието | | **Разработка** | Поддръжка на множество HTML файлове | Един HTML с динамични шаблони | **Разбиране на еволюцията:** - **Традиционните приложения** изискват заявки към сървъра за всяко действие на навигация - **Модерните SPAs** се зареждат веднъж и актуализират съдържанието динамично с помощта на JavaScript - **Очакванията на потребителите** вече предпочитат моментални, безпроблемни взаимодействия - **Предимства в производителността** включват намалена честотна лента и по-бързи отговори В този урок ще създадем банково приложение с множество екрани, които плавно преминават един в друг. Както учените използват модулни инструменти, които могат да бъдат преконфигурирани за различни експерименти, ние ще използваме HTML шаблони като многократно използваеми компоненти, които могат да бъдат показвани при нужда. Ще работите с HTML шаблони (многократно използваеми чертежи за различни екрани), JavaScript маршрутизация (система, която превключва между екраните) и API за историята на браузъра (който поддържа бутона за връщане назад да работи както се очаква). Това са същите основни техники, използвани от рамки като React, Vue и Angular. До края ще имате работещо банково приложение, което демонстрира професионални принципи на едностраничните приложения. ## Предварителен тест [Предварителен тест](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 за поддръжка на международен текст - **Активира** адаптивен дизайн с мета таг за изглед за мобилна съвместимост - **Задава** описателно заглавие, което се появява в раздела на браузъра - **Създава** чиста секция за тялото, където ще изградим нашето приложение > 📁 **Преглед на структурата на проекта** > > **До края на този урок вашият проект ще съдържа:** > ``` > bank/ > ├── index.html > ├── app.js > └── style.css > ``` > > **Отговорности на файловете:** > - **index.html**: Съдържа всички шаблони и предоставя структурата на приложението > - **app.js**: Управлява маршрутизацията, навигацията и управлението на шаблоните > - **Шаблони**: Определят потребителския интерфейс за вход, табло и други екрани --- ## HTML шаблони Шаблоните решават основен проблем в уеб разработката. Когато Гутенберг изобретил печатането с подвижни букви през 1440-те години, той осъзнал, че вместо да издълбава цели страници, може да създаде многократно използваеми блокове с букви и да ги подрежда според нуждите. HTML шаблоните работят на същия принцип – вместо да създавате отделни HTML файлове за всеки екран, дефинирате многократно използваеми структури, които могат да бъдат показвани при нужда. Помислете за шаблоните като за чертежи на различни части от вашето приложение. Точно както архитект създава един чертеж и го използва многократно, вместо да прерисува идентични стаи, ние създаваме шаблони веднъж и ги използваме при нужда. Браузърът държи тези шаблони скрити, докато JavaScript не ги активира. Ако искате да създадете множество екрани за уеб страница, едно решение би било да създадете един HTML файл за всеки екран, който искате да покажете. Въпреки това, това решение идва с някои неудобства: - Трябва да презареждате целия HTML при смяна на екрана, което може да бъде бавно. - Трудно е да споделяте данни между различните екрани. Друг подход е да имате само един HTML файл и да дефинирате множество [HTML шаблони](https://developer.mozilla.org/docs/Web/HTML/Element/template), използвайки елемента `