Жизнь без шаблонов

Я хотел бы поделиться впечатлениями после довольно продолжительного времени разработки без шаблонизаторов на бэкенде. История началась с отказа от Template::Toolkit на серверной стороне и переноса представления на сторону веб клиента [1]. Вместе с представлением туда переместились и шаблоны, сохранив за собой право быть использованными и на серверной стороне [2], но это отдельная тема. Сейчас, по истечении некоторого времени, очевидны стали следующие моменты.

Упростилась разработка бэкенда

На данный момент, по сути, серверная строна представляет собой API с авторизацией для доступа к данным, а форматы вывода: JSON, JSONP и XML. Ниже я приведу пример кода, который определяет требуемый формат вывода и форматирует результаты. Код написан для «WebDAO» [3], но общий смысл, я постараюсь передать в комментариях:

undefined

Данный код позволяет писать простые методы:

sub Test {{1 => 2, error => 0}}

Достаточно вернуть в качестве ответа ссылку на хэш и преобразование к требуемому формату будет выполнено автоматически.

Следующим и, пожалуй, наиболее эффектным последствием отказа от шаблонизаторов на бэкенде стала возможность разрабатывать без веб сервера и браузера. Текстовые форматы JSON и XML хорошо читаются без дополнительных программ и хорошо воспринимаются при отображении в консоли.

Поэтому увидеть результат запроса просто:

wd_shell -M MyApp /Test

Результат:

{"1" : 2, "error" : 0}

Тоже с параметрами:

wd_shell -M MyApp '/Test?format=xml'

Результат:

<opt 1="2" error="0" />

Таким образом значительно упрощается среда разработки и время необходимое для развертывания окружения.

«Кесарю кесарево» [4]

Шаблоны были неким общим «местом встречи» фронтенд и бэкенд разработчиков. Файлы шаблонов редактировали одни и вторые. С одной стороны, серверсайд программисты проникались чувством прекрасного посредством копипасты кусков html и css, а с другой стороны – дизайнеры и javascript разработчики, вынуждены были знать дополнительный серверный язык шаблонов ( и быть в некоторой зависимости от принятых правил деплоя ).

На данный момент единственным связующим фронтенд и бэкенд разарботку является API, который структурирован, может быть формализован и документирован. Это делает разработку динамичнее благодаря отсутствию общих точек, где возможны «блокировки», и определяет четкие границы ответственности.

Итог

Не факт, что избавление от шаблонизаторов на стороне сервера - универсальный рецепт на все случаи жизни. Но для некоторых проектов использование подобного подхода - хороший способ упростить разработку и даже начать экпериментировать с разными технологиями бэкендов.

К тому же, этот API может стать хорошим стартом для создания публичного API сервиса.

[1] Perl 5 модули, которые я использую реже и реже. http://zag.ru/b48j1

[2] Plosurin: Perl реализация Closure Templates. http://zag.ru/a4Fr1

[3] Платформа WebDAO для разработки web приложений на Perl 5. http://webdao.sourceforge.net/

[4] Кесарю кесарево. http://ru.wikipedia.org/wiki/Кесарю кесарево

All Articles