ОБЛАСТИ ПРИМЕНЕНИЯ ГЕНЕРАЦИИ ПРОГРАММНОГО КОДА
Боровиков А.И., Олейник В.Ю., Григорьев А.В.
ГОУ ВПО «Донецкий национальный технический университет» (г. Донецк)
e-mail: aleksey.borovikov.00@mail.ru, vadim182002@gmail.com, grigorievalvl@gmail.com
Боровиков А.И., Олейник В.Ю., Григорьев А.В. Области применения генерации программного кода при помощи шаблонизаторов. В статье рассмотрены основные области применения генерации программного кода при помощи шаблонизаторов.
Ключевые слова: генерация кода, шаблонизатор, бизнес-логика, логика представления.
Borovikov A.I., Oleynik V.Y., Grigoriev A.V. Areas of application of generating program code using template engines. The article discusses the main areas of application of generating program code using template engines.
Keywords: code generation, template processor, business logic, view logic.
Введение
Шаблон (для шаблонизатора) – это текстовой файл, написанный на специальном языке (язык шаблона), который поддерживает как минимум следующие механизмы: переменные, фильтры, функции, циклы и наследование.
Шаблонизатор (template processor, template engine или template parser) – это программное обеспечение, предназначенное для объединения шаблонов с моделью данных для создания результирующих документов [1].
Язык, на котором написаны шаблоны, известен как язык шаблонов или язык шаблонов.
Результирующий документ – это любой форматированный вывод, включая документы, веб-страницы или исходный код (при генерации исходного кода), целиком или фрагментами.
Механизм шаблонов обычно включается как часть системы веб-шаблонов или платформы приложений и может использоваться также в качестве препроцессора или фильтра.
Цель написания данной статьи заключается в описании мотивов создания и модернизации шаблонизаторов в веб-программировании, разборе общих принципов генерации кода на основе шаблонов при помощи механизма шаблонов, проанализировать готовые решения автоматизации процесса генерации кода и их варианты использования для разных языков веб-программирования.
История
8 июня 1995 года появилась первая версия PHP [4]. Одной из его особенностей была возможность простого взаимодействия с языком разметки HTML. Эта возможность вызвала массу проблем. Дело в том, что PHP используется для программирования серверной части системы, а HTML – для отображения ответов сервера. Из-за простого взаимодействия php и html бизнес-логика и логика представления смешались. Без разделения этих двух аспектов веб-системы начинаются проблемы связанные со сложной масштабирования проекта или банального изменения одной из логик.
Для решения этой проблемы и были созданы шаблонизаторы. Они были призваны разделить бизнес-логику и логику представления. Получив данные шаблонизатор создаёт код по шаблону с этими значениями и возвращает нужную разметку, таким образом смешать две логики становится невозможно [3].
Принцип работы шаблонизатора
Шаблонизаторы обычно включают функции, общие для большинства языков программирования высокого уровня, с акцентом на функции обработки обычного текста:
– переменные и функции;
– замена текста;
– инклюзия файла (или трансклюзия);
– условная оценка и циклы.
Все системы обработки шаблонов состоят из четырёх основных элементов:
1. связанная модель данных;
2. один или несколько исходных шаблонов;
3. процессор или механизм шаблонов;
4. сгенерированный вывод в виде результирующего документа.
Связанная модель данных – может быть реляционная база данных, исходный файл, такой как XML, альтернативный формат базы данных плоских файлов, электронная таблица или любой из других различных источников предварительно отформатированных данных.
Некоторые шаблонизаторы ограничены в типах данных, которые могут быть использованы, другие предназначены для максимальной гибкости и позволяют использовать множество различных типов данных.
Исходные шаблоны обычно задаются:
– в соответствии с уже существующим языком программирования;
– в соответствии со специально определенным языком шаблонов;
– в соответствии с функциями программного приложения для хостинга;
– в соответствии с функциями программного приложения для хостинга;
Механизм шаблонов отвечает за подключение к модели данных, обработку кода, указанного в исходных шаблонах и направление выходных данных в определенный конвейер, текстовый файл или поток.
Кроме того, некоторые механизмы шаблонов допускают дополнительные параметры конфигурации.
На выходе получаем результирующий файл с разметкой.
Использование
Шаблонизатор используется в различных контекстах для различных целей. Конкретная цель обычно зависит от используемого программного приложения или механизма шаблонов. Однако гибкость систем обработки шаблонов часто позволяет нетрадиционно использовать их в целях, изначально не предусмотренных.
Основные цели использования:
1. механизм шаблонов;
2. генерация документов;
3. генерация исходного кода;
4. функциональность программного обеспечения.
Механизм шаблонов – это особый вид модуля обработки шаблонов, который обладает всеми основными функциями современного языка программирования.
Термин механизм шаблонов развился как обобщенное описание языков программирования, основной или исключительной целью которых была обработка шаблонов и данных для вывода текста. Использование этого термина в первую очередь относится к веб-разработке с использованием системы веб-шаблонов, а также применяется и в других контекстах.
Структуры создания документов обычно используют обработку шаблонов в качестве центральной модели для создания документов.
Инструменты генерации исходного кода поддерживают генерацию исходного кода (в качестве результирующих документов) из абстрактных моделей данных (например, UML, реляционных данных, корпоративных хранилищ данных для конкретных доменов приложений, конкретных организаций или для упрощения производственного процесса для программистов.
Так же помогает в реализации паттернов проектирования архитектуры, таких как MVVM(выполняет роль генерации view по view), MVC (выполняет роль контроллера, который передаёт данные view) и т.д..
Механизм веб-шаблонов обрабатывает веб-шаблоны и исходные данные (обычно из реляционной базы данных) для создания одной или нескольких выходных веб-страниц или фрагментов страниц. Обычно он включается как часть системы веб-шаблонов или платформы приложений. В настоящее время программное обеспечение для обработки шаблонов чаще всего используется в контексте разработки для Интернета [2].
Выводы
Процесс генерации кода по шаблону выполняется компонентом, известным как шаблонизатор или процессор шаблонов. Исходный код любого конечного файла проходит несколько стадий генерации кода по шаблону, таких как парсинг исходного шаблона и рендеринг итогового файла с использованием переданных шаблонзатору данных.
Генерация кода является эффективной и мощной техникой с потенциально безграничными возможностями. Все они могут быть использованы для повышения производительности при условии правильного их использования.
Литература
- 1. Шаблонизатор // Wikiqube [Электронный ресурс] – Режим доступа: [Перейти]
- 2. Template processor // Wikipedia [Электронный ресурс] – Режим доступа: [Перейти]
- 3. Вся правда о шаблонизаторах // Habr [Электронный ресурс] – Режим доступа: [Перейти]
- 4. PHP // Jet brains [Электронный ресурс] – Режим доступа: [Перейти]