JS: Веб-разработка
Теория: Шаблоны
В этом уроке мы познакомимся с шаблонизаторами.
Зачем нужны шаблонизаторы
Fastify и другие подобные фреймворки позволяют создавать полноценные сайты без дополнительных инструментов. Рабочий сайт должен просто возвращать ответ с HTML-кодом, который браузер отобразит как страницу:
Здесь мы видим упрощенный пример, в котором мы возвращаем только заголовок H1.
В реальных приложениях возвращаемый HTML состоит из сотен и тысяч строк. Работать с такими объемами стандартным способом очень сложно. Вот лишь некоторые проблемы, с которыми мы столкнемся:
- Такой код сложно формировать, редактировать и поддерживать
- В таком коде очень легко допустить ошибку и очень сложно ее обнаружить
- В таком коде будут возникать проблемы с одинарными или двойными кавычками, придется их экранировать и постоянно следить за этим
Для решения этой проблемы используются шаблонизаторы. Это библиотеки, которые позволяют формировать HTML в отдельных файлах с подсветкой и удобной подстановкой данных. Другими словами, мы получаем не HTML внутри кода, а код внутри HTML.
В мире Fastify есть несколько разных шаблонизаторов. Для этого курса мы выбрали Pug.
Посмотрим, как выглядит шаблон в PUG:
Как начать работать с PUG
Чтобы начать работу с pug в Fastify, нужно установить два пакета:
Пакет @fastify/view добавляет в Fastify поддержку шаблонизаторов. При подключении плагина нужно указать, что мы хотим использовать Pug в качестве шаблонизатора в нашем приложении:
Шаблоны Pug хранятся в директории src/views и имеют расширение pug. Чтобы попрактиковаться, добавим первый шаблон для главной страницы сайта. Для этого выполним два действия:
-
Создадим шаблон src/views/index.pug со следующим содержимым:
-
Укажем обработчику главной страницы использовать этот шаблон:
Обратите внимание на метод res.view() в коде выше. Он выполняет рендеринг указанного шаблона и добавляет результат в HTTP-ответ.
Путь до шаблона указывается относительно директории корня приложения:
Сами шаблоны могут располагаться и на более глубоком уровне. Это становится важно, когда количество шаблонов увеличивается.
Шаблонизатор не задает правила именования и внутренней структуры шаблонов. Но работать без правил слишком сложно, поэтому со временем мы самостоятельно выработаем правила и будем их придерживаться.
Как работает отображение данных
Как правило, HTML внутри шаблонов формируется на основе данных, которые мы хотим вывести. Например, чтобы вывести информацию о курсе на странице /courses/
, мы передаем объект этого курса в шаблон и формируем HTML на основе его содержимого.Рассмотрим, по какому алгоритму обработчики обычно работают с шаблонами:
- Сначала они извлекают все необходимые данные
- Затем они создают объект с данными для шаблона
- В итоге они передают этот объект в шаблон в виде объекта
Остался последний шаг — вывести данные курса в шаблоне. Для этого в шаблонах есть доступ к объекту, который мы передали в обработчике:
Какие управляющие конструкции используются в Pug
Кроме обычного вывода значений, в шаблонах часто используются условные конструкции и циклы. С их помощью показываются списки, прячутся или показываются определенные блоки и так далее.
Подробнее обо всех этих конструкциях можно прочитать в официальной документации. А здесь мы разберем пример на базе маршрута /courses, по которому выводится список курсов с описанием и ссылками на курсы.
-
Обработчик маршрута:
-
Шаблон
Логика вывода здесь такая:
- Если список курсов пустой, то выводится соответствующее сообщение
- Если курсы в списке есть, то на основе этого списка формируются HTML-блоки с информацией о курсе и ссылки на его страницу
Этих конструкций хватит для решения большинства стандартных задач.
Рекомендуемые программы
Завершено
0 / 23


