HTML::Template
больше всего
[center]
HTML::Template
[/center]
HTML::Template — небольшая по объёму перл-библиотека для работы с шаблонами, позволяющая разделять код, данные и представление.
Template Toolkit — наиболее удачное решение для работы с шаблонами в Perl. Template Toolkit более прост в изучении, написании, но обладает гораздо большими возможностями чем HTML::Template. Описываемая в этой статье библиотека позволяет писать лишь простейшие шаблоны, почти лишённые программной логики.
Содержание
* 1 Возможности. Преимущества. Специфика
* 2 Недостатки
* 3 Тэги
o 3.1 TMPL_VAR
o 3.2 TMPL_LOOP
o 3.3 TMPL_INCLUDE
o 3.4 TMPL_IF
o 3.5 TMPL_ELSE
o 3.6 TMPL_UNLESS
* 4 Автор
* 5 Ссылки
Возможности. Преимущества. Специфика
В HTML::Template используется свой мини-язык, по написанию схожий с HTML-тэгами.
Пример шаблона:
Код: Выделить всё
<html>
<head><title> <TMPL_VAR NAME="title"> </title></head>
<body>
Вывод списка:
Код: Выделить всё
<ul>
<TMPL_LOOP NAME="items">
<li> <TMPL_VAR NAME="item"> </li>
</TMPL_LOOP>
</ul>
</body>
</html>
И вызывающий его скрипт:
Код: Выделить всё
#!/usr/bin/perl
use HTML::Template;
my $template = HTML::Template->new(filename => 'test.tmpl');
$template->param(title => "Заголовок страницы");
$template->param(items => [
{item => 'один'},
{item => 'два'},
{item => 'три'},
]);
print "Content-type: text/html\n\n";
print $template->output();
* Может кэшировать шаблоны в память, общую память (shared memory) или на диск.
Недостатки
* Не позволяет обращаться напрямую ко вложенным структурам, таким как хэши массивов и тому подобным.
* Шаблоны можно вкладывать один в другой по схемам сверху-вниз и снаружи-внутрь. Строить шаблоны изнутри-наружу нельзя.
* Переменным нельзя присваивать значения, и вообще, производить с ними какие-либо операции, с них можно только считывать. Из-за этого не получится реализовать шаблонную логику уровня сложности выше простого.
* Из циклов присутствует только foreach, что позволяет вывести только последовательный список.
* Если внутри цикла присутствует переменная с таким же именем, как и вне цикла, то к последней изнутри цикла обратиться нельзя.
* Цикл не позволяет производить итерацию по хэшам.
* HTML::Template не позволяет обращаться к методам объектов.
HTML::Template обладает следующим скромным набором тэгов.
Самый простой тэг. Выводит значение переменной, значение которой вы присвоили через $template->param(PARAMETER_NAME => «VALUE»).
Позволяет делать HTML-экранирование, при помощи ESCAPE=HTML:
Код: Выделить всё
<input name=param type=text value="<TMPL_VAR ESCAPE=HTML NAME="PARAM">">
Позволяет делать URL-экранирование ESCAPE=URL, обрабатывать строки, которые в последствии будут строками кода JavaScript ESCAPE=JS. Позвляет так же устанавливать значение переменной по умолчанию DEFAULT='SOME VALUE'.
TMPL_LOOP
Код: Выделить всё
<TMPL_LOOP NAME="LOOP_NAME"> ... </TMPL_LOOP>
Цикл по массиву. Переменная LOOP_NAME должна содержать массив хэшей.
<TMPL_LOOP> могут быть вложенными.
По умолчанию, переменные снаружи цикла не видны внутри него. Для изменения этого свойства следует использовать опцию global_vars в конструкторе объекта.
TMPL_INCLUDE
Вставляет на место этого тэга указанный шаблон.
TMPL_IF
Код: Выделить всё
<TMPL_IF NAME="BOOL">
Some text that only gets displayed if BOOL is true!
</TMPL_IF>
TMPL_ELSE
Код: Выделить всё
<TMPL_IF BOOL>
Some text that is included only if BOOL is true
<TMPL_ELSE>
Some text that is included only if BOOL is false
</TMPL_IF>
TMPL_UNLESS
Код: Выделить всё
<TMPL_UNLESS BOOL>
Some text that is output only if BOOL is FALSE.
<TMPL_ELSE>
Some text that is output only if BOOL is TRUE.
</TMPL_UNLESS>
Тэг, обратный по действию тэгу <TMPL_IF>
Автор
Sam Tregar
Ссылки
*
http://search.cpan.org/dist/HTML-Template/Template.pm