Шаблонизаторы — инструменты для автоматической генерации текстовых данных на основе шаблонов и входных данных.
Используются в:
▫️API-интеграции: генерация HTTP-запросов и ответов, JSON/XML-запросов (например, Mustache в OpenAPI/Swagger)
▫️ESB: преобразование входящих сообщений в нужный формат (Freemarker в Apache Camel)
▫️MQ: формирование сообщений перед отправкой в очередь (Jinja2 в Celery, Handlebars)
▫️ETL: шаблоны для преобразования данных при загрузке в хранилище
▫️Создание конфигурационных файлов для разных окружений (Helm)
▫️Генерация технической документации
▫️Коде: создание CRUD-операций, DTO (Data Transfer Object), API-клиентов
▫️SQL: генерация динамических SQL-запросов, шаблоны для отчётов и аналитики (например, Jinja2 в dbt, Mustache в SQLAlchemy)
Примеры
⏪ Динамическое создание сценариев для разных ролей пользователей ⏩
Шаблон описывает процесс оформления заказа, но меняются условия для разных ролей:
🟡администратор может менять статус вручную
🟡менеджер получает уведомление
🟡клиент видит статус в личном кабинете
Вместо 3-х сценариев используется шаблон с переменными
{role}, {action}, {notification}. Например, с помощью Jinja2, Mustache
⏪ Гибкое преобразование данных ⏩
Форматы сообщений генерируются из шаблонов (например, FreeMarker или Jinja2):
🟡для банка нужен XML-формат: шаблон
payment_template.xml🟡для маркетинговой платформы JSON: шаблон
email_template.json🟡для ERP CSV-файл: шаблон
orders_template.csvЕсли банк меняет XML-структуру, достаточно обновить шаблон, а не переделывать всю интеграцию
Примеры шаблонизаторов
📌 Mustache — универсальный шаблонизатор для API, UI, конфигураций, доступен для различных языков программирования, включая JavaScript, Python и Ruby
✏️ Как применить
Разработка микросервисного API для обработки заказов
Проблемы:
❌ API-документация устаревает, обновлятся вручную
❌ доп время на написание Swagger/OpenAPI-описаний
❌ разные версии API дублируют документацию
Пример решения:
✔️ создается шаблон, где параметры API (методы, URL, заголовки) подставляются динамически
✔️ Swagger/OpenAPI автоматически заполняется актуальными значениями
✔️ любое изменение в коде API сразу отражается в документации
📌 FreeMarker — шаблонизатор на Java
Используется для генерации текстовых выходных данных (HTML, конфигурационные файлы, исходный код)
✏️Как применить:
Разработка веб-приложения
1. Динамическая генерация страниц (баланс, последние транзакции) с неизменной версткой
Контроллер Spring Boot передаёт в шаблон FreeMarker объект пользователя с балансом и историей операций.
FreeMarker подставляет данные в HTML и формирует готовую страницу
🔸если баланс больше 100 000₽, показывается статус «Премиум-клиент»
🔸если меньше 1000₽, предлагается «Пополнить баланс»
🔸история платежей подставляется в виде таблицы с циклом
2. Персонализация контента: разные предложения для пользователей
В шаблоне используются условия
<#if> — если клиент VIP, добавляется блок с индивидуальными предложениями. Контент обновляется без изменения логики бэкенда
🔸обычный клиент: «Оформите кредит под 10%»
🔸VIP-клиент: «Специальное предложение: кредит под 5%»
3. Повторное использование компонентов (хедер, меню, подвал) без копирования вручную
Общие шаблоны (layouts) с подключением через
includeЕсли нужно изменить меню — правится один файл
-- все страницы используют один
header.ftl* с логотипом и навигацией-- в
footer.ftl хранится контактная информация-- основной шаблон (
base.ftl) объединяет их в одну структуру*FreeMarker Template Language (FTL)
📎 Материалы
1. Что такое и зачем нужны шаблонизаторы HTML
2. Текстовые шаблонизаторы и их реализация
3. Три неочевидных примера использования шаблонизаторов в backend-е
4. Шаблонизаторы HTML: что это и стоит ли их использовать в разработке
5. 15 шаблонизаторов для фронтенд-разработки
6. 6 лучших шаблонизаторов на PHP
7. 5 популярных PHP-шаблонизаторов
8. ТОП-10 шаблонизаторов HTML для web-разработки
#инфраструктура
➿➿➿➿➿➿➿➿
🧑🎓 Больше полезного в базе знаний по системному анализу