Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
Все «расширенные» (в сравнении с обычным кодом HTML) возможности шаблонов должны заканчиваться на возможностях:
n пометить точку для вставки (переменная шаблона);
n пометить блок для выбора (именованный IF);
n пометить блок для повтора (именованный LOOP).
И даже это избыточная модель! В PHP-ом XTemplate все еще более «доведено до ума»:
<ul><!-- BEGIN: menulist -->
<!-- BEGIN: link -->
<li><a href="{ITEM.URL}">{ITEM.NAME}</a></li><!-- END: link -->
<!-- BEGIN: active -->
<li>{ITEM.NAME}</li><!-- END: active -->
<!-- END: menulist --></ul>
И все!
У вас есть блок вида: <— BEGIN: имя —> …<— END: имя —>. На стороне программы вы можете повторить его нужное количество раз или выбрать из двух смежных тот, который нужно вывести, исходя из логики.
Для библиотеки Perl HTML::Template считайте именованным блоком конструкцию <TMPL_IF NAME=имя >… </TMPL_IF>. Все, что нужно повторить несколько раз, должно быть заключено в конструкцию вида <TMPL_LOOP NAME=имя> …</TMPL_LOOP>.
У вас есть место вставки вида {имя} или явная поблажка {имя_структуры.имя}.
И последняя конструкция – включение одного шаблона в другой. По принципу inline-подстановки: {FILE «имя»} или <TMPL_INCLUDE NAME=«имя»>.
Класс (движок) шаблонов должен уметь работать с вложениями блоков друг в друга и воспринимать каждый блок как отдельное пространство имен. Для HTML::Template это будет верно, если вы начнете рассматривать хэш, заполняющий цикл как ограничитель такого пространства.
Этого достаточно, чтобы сформировать любой вывод.
Класс (движок) шаблонов должен позволять рекурсивное включение файлов-шаблонов друг в друга.
Это позволит вам создавать отдельные мини-шаблоны для повторяющихся элементов, а не копировать один и тот же HTML-код из шаблона в шаблон.
Движок шаблонов должен быть инкапсулирован в отдельный класс-библиотеку. Подключаться, как любой другой модуль-файл, в программу и не требовать сложных действий для инсталляции или добавления в любую систему. Это позволит вам легко переносить и добавлять поддержку шаблонов в любую систему, не занимаясь перестановкой и дополнительной настройкой окружения.
Движок также не должен требовать предварительной компиляции шаблонов ни в какое промежуточное представление. Это позволит вносить изменения в оформление именно на уровне шаблонов и полностью отделить HTML-форматирование вывода от программной части.