HTML: Препроцессор Pug
Теория: Подключение файлов
Преимущество Pug перед простым HTML — возможность подключения файлов. Представьте проект, состоящий из пяти статических страниц. Некоторые сайты, при таком объёме, не используют CMS или другие серверные решения, которые будут управлять шаблоном сайта. Во-первых, это быстрее, так как нет дополнительной обработки, во-вторых, это снижает порог входа в проект.
У статического решения есть одна глобальная проблема — переиспользование повторяющихся HTML-блоков. Чаще всего это футер, шапка, меню, баннеры и так далее. Копировать HTML — не лучшее решение, так как рано или поздно это приведёт к различиям в блоках.
В этой ситуации на помощь приходит Pug. Он позволяет создать отдельные файлы для повторяющихся элементов и подключать их внутрь любого файла. Как будет рассмотрено в уроке, это может быть не только разметка, но и любые данные, вплоть до интерпретации других файлов, таких как Markdown.
Для примера создадим несколько Pug-файлов с разметкой шапки и футера:
Эти файлы можно включать внутрь любых других Pug-файлов используя конструкцию include и указав путь к подключаемому файлу.
Во время обработки index.pug интерпретатор подставит все подключаемые файлы. В этом случае нет необходимости компилировать все файлы, только основной. С подобной структурой подключений мы уже знакомились в курсе посвященному препроцессору SASS.
Pug позволяет подключать любой тип файла. Логика достаточно проста — данные любого подключенного файла будут вставлены «как есть». Таким образом можно подключить не только шаблоны с синтаксисом Pug, но и скрипты, CSS код, текстовые данные.
Дополнительные модули
При работе с Pug можно пользоваться не только встроенными возможностями, но и расширять их другими обработчиками. Это достигается за счёт взаимодействия с jstransformer.
В качестве примера используем распространённую задачу по добавлению файлов формата markdown в разметку. Markdown — язык разметки текстов, который может преобразовываться в HTML. Такой способ записи текстов облегчает их прочтение и даёт возможность правильно размечать тексты людям, которые далеки от вёрстки.
Преобразуем следующий текст:
Интересно: на Хекслете тексты для курсов пишутся именно в формате Markdown, а потом автоматически переводятся в HTML-разметку при их загрузке на сервер.
Для преобразования Markdown в HTML в препроцессоре Pug используется пакет jstransformer-markdown-it. Его можно установить командой
Для подключения модуля используется синтаксис :название-модуля. Всё, что находится внутри модуля, будет обработано скриптом.
Важно: я специально аккуратно форматирую итоговый HTML-код для удобного чтения во время урока. Если вы повторите шаги из урока, Pug может выдать вам немного другое форматирование. Это не страшно и не является ошибкой.
Внутрь модулей так же можно передавать файл для подключения. Это приоритетный вариант, так как лучше не иметь текст внутри Pug файлов, а хранить их отдельно. Это большая тема, посвящённая архитектуре приложений, но старайтесь разделять текст и его вывод. Чем меньше текста содержится в Pug, тем проще с ним работать.
Для подключения файла к модулю используется та же конструкция include, после которой указывается название модуля и файл для подключения.
Дополнительное задание
Создайте базовую разметку HTML страницы с использованием Pug и добавьте следующий текст в формате markdown:
