Как я уже не раз замечал, обычно всякий веб-программист на perl проходит в своём развитии следующие стадии:
Шаблоны станиц не используются. Характерно для начинающих, совсем зеленых ещё программистов. Вывод страниц формируется непосредственно внутри скрипта, примерно следующим образом:
my $title = 'Hello world'; print "Content-type: text/html\n\n"; print "<html><head><title>$title</title></head>";
Проект начинает расти и программист замечает, что становится неудобно вносить изменения в дизайн страницы. Редактирование исходного кода программы нелогично, ведь алгоритм работы остается неизменным! Работа с html тегами осложнена, они же встаиваются в синтаксис другого языка, появляется избыточный синтаксический мусор. Про разделение труда на программиста и верстальщика и вообще говорить нечего, здесь оно невозможно. Так программист приходит к следующей стадии.
Самописная шаблонная система. Теперь вывод страниц формируется при помощи отдельной функции. Шаблон загружается из внешнего файла. С помощью регулярных выражений в нем организуется поиск и замена фрагментов кода, например специально помеченных комментариев:
<table> <tr> <td><img src="logo.gif"></td> <td><!-- $TopMenu --></td> </tr> <tr> <td><!-- $LeftMenu --></td> <td><!-- $Content --></td> </tr> </table>
Иногда реализуется функциональность вставки других файлов в шаблон (Include). По сравнению с начальным вариантом — это большой шаг вперед, программист освобождается от большинства описанных недостатков. Это уже не «ходьба пешком», но ещё и не «езда на лимузине». Обычно собственная шаблонная система работает неоптимально и не предоставляет многих возможностей разработчику. Многие программисты надолго, если не на всегда, застревают на данной стадии и необоснованно гордятся своими поделиями. Другие же обрашаются к:
Одна из общепризнанных шаблонных систем. От самописной системы они отличаются возможностями:
- Полное разделение логики программы и внешнего вида страницы. Весь html код находится в шаблоне, скрипт сам не выдает ни одного тега.
- Условные вставки. Фрагмент шаблона появлется на странице при выполнении какого-либо условия.
- Обработка циклов или массивов переменных. Например, к элементам массива может быть применена одинаковая разметка и сформирована html таблица.
- Дополнительные возможности — кеширование шаблонов и/или сгенерированных страниц, подключение пользовательских плугинов/фильтров.
- Годы поддержки и развития, хорошее быстродействие.
В мире perl наиболее известными шаблонными системами являются:
Выбор конкретной системы — вопрос личных вкусов и предпочтений, я использую HTML::Template. Она мне нравится за простой язык шаблонов, напоминающий html теги, без попыток создать новый язык программирования. Но подробный рассказ о этой шаблонной системе — тема для отдельной статьи. В завершение хочу заметить что применять шаблоны можно не только для создания html страниц. На CPAN присутствуют модули для создания excel и pdf документов из xml шаблонов. Пример создания excel таблицы на perl из xml шаблона мною был уже описан.
6 комментариев:
Последней стадией бывает XSLT.
А если сразу стал использовать Mason -- это как называется?
Видимо рядом оказался perl гуру, который уже использовал Mason :-)
А нельзя как в рнр?
<title><?php get_title(); ?></title>
Можно, но я противник такого подхода, поэтому ничего не писал про него. Фактически мы опять получим первую стадию, когда оформление станицы смешано с кодом скрипта.
За выбор HTML::Template уважаю. Сам использую его очень давно и всем советую. Абсолютно не нагруженный излишними возможностями. Очень быстрый в работе и в изучении.
Отправить комментарий