# Создание банковского приложения, часть 1: HTML-шаблоны и маршруты в веб-приложении Когда навигационный компьютер Apollo 11 вел корабль к Луне в 1969 году, он переключался между различными программами, не перезагружая всю систему. Современные веб-приложения работают аналогично — они изменяют то, что вы видите, без полной перезагрузки. Это создает плавный и отзывчивый интерфейс, который пользователи ожидают сегодня. В отличие от традиционных веб-сайтов, которые перезагружают целые страницы при каждом взаимодействии, современные веб-приложения обновляют только те части, которые необходимо изменить. Этот подход, подобно тому, как центр управления миссией переключается между различными дисплеями, поддерживая постоянную связь, создает тот самый плавный опыт, к которому мы привыкли. Вот что делает разницу такой заметной: | Традиционные многостраничные приложения | Современные одностраничные приложения | |-----------------------------------------|---------------------------------------| | **Навигация** | Полная перезагрузка страницы для каждого экрана | Мгновенное переключение контента | | **Производительность** | Медленнее из-за загрузки полного HTML | Быстрее благодаря частичным обновлениям | | **Пользовательский опыт** | Резкие вспышки страниц | Плавные переходы, похожие на приложения | | **Обмен данными** | Сложно между страницами | Легкое управление состоянием | | **Разработка** | Множество HTML-файлов для поддержки | Один HTML с динамическими шаблонами | **Понимание эволюции:** - **Традиционные приложения** требуют запросов к серверу для каждого действия навигации - **Современные SPA** загружаются один раз и динамически обновляют контент с помощью 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 для поддержки международного текста - **Включает** адаптивный дизайн с метатегом viewport для совместимости с мобильными устройствами - **Устанавливает** описательный заголовок, который отображается на вкладке браузера - **Создает** чистый раздел body, где мы будем строить наше приложение > 📁 **Предварительный обзор структуры проекта** > > **К концу этого урока ваш проект будет содержать:** > ``` > 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) с использованием элемента `