Шаблонизаторы
Шаблонизаторы — инструменты для автоматической генерации текстовых данных на основе шаблонов и входных данных.
Где используются
- 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)
Примеры
Динамическое создание сценариев для разных ролей пользователей
Один шаблон описывает процесс оформления заказа, но меняются условия для разных ролей:
- администратор може т менять статус вручную
- менеджер получает уведомление
- клиент видит статус в личном кабинете
Вместо трёх сценариев можно использовать шаблон с переменными {role}, {action}, {notification}.
Например, с помощью Jinja2, Mustache.
Поддержка локализации
Система должна поддерживать многоязычные шаблоны отчетов и email-уведомлений (например, на основе Mustache или FreeMarker):
- шаблон отчета содержит переменные
{name},{date_format},{currency_format} - автоматически подставляются нужные значения
Гибкое преобразование данных
Форматы сообщений генерируются из шаблонов (например, 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 требуют дублирования документации
Использование Mustache:
- создается шаблон документации, где параметры API (методы, URL, заголовки) подставляются динамически
- Swagger/OpenAPI автоматически заполняется актуальными значениями
- любое изменение в коде API сразу отражается в документации
Helm — шаблонизатор для Kubernetes
Позволяет управлять развертыванием приложений с помощью шаблонов YAML-файлов конфигураций (манифестов)
Как можно использовать
Инфраструктура микросервисов развернута в Kubernetes.
Для каждого микросервиса нужно создавать манифесты, указывать порты, ресурсы, окружение.
Проблема:
- у каждого сервиса свои параметры, но структура файлов YAML повторяется
- редактирование конфигураций вручную
- ошибки при копировании и изменении параметров
Использование Helm:
- создается шаблон манифеста, где параметры (имя сервиса, ресурсы, порты) задаются как переменные
- для развертывания нового сервиса нужно только передать конкретные значения
- централизованное обновление конфигурации
FreeMarker — шаблонизатор на Java
Используется для генерации текстовых выходных данных (HTML, конфигурационные файлы и исходный код).