HTML::Template

HTML::Template

HTML::Template — «легковесная» перл-библиотека для работы с шаблонами, позволяющая разделять код, данные и представление.

Если вы ищете хорошую библиотеку для работы с шаблонами, то прежде всего обратите внимание на Template Toolkit — наиболее мощное решение для такого рода задач в мире Perl. Как это ни парадоксально, Template Toolkit более прост в изучении, написании, но обладает гораздо большими возможностями чем HTML::Template. Описываемая в этой статье библиотека позволяет писать лишь простейшие шаблоны, почти напрочь лишённые программной логики.

Содержание

Возможности/преимущества/специфика

В 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 обладает следующим скромным набором тэгов.

TMPL_VAR

<TMPL_VAR NAME="PARAMETER_NAME">

Самый простой тэг. Выводит значение переменной, значение которой вы присвоили через $template->param(PARAMETER_NAME => «VALUE»).

Позволяет делать HTML-экранирование, при помощи ESCAPE=HTML:

<input name=param type=text value="<TMPL_VAR ESCAPE=HTML NAME="PARAM">">

TMPL_LOOP

<TMPL_LOOP NAME="LOOP_NAME"> ... </TMPL_LOOP> 

Цикл по массиву. Переменная LOOP_NAME должна содержать массив хэшей.

<TMPL_LOOP> могут быть вложенными.

По умолчанию, переменные снаружи цикла не видны внутри него. Для изменения этого свойства следует использовать опцию global_vars в конструкторе объекта.

TMPL_INCLUDE

<TMPL_INCLUDE NAME="filename.tmpl">

Вставляет на место этого тэга указанный шаблон.

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

Ссылки

 
Начальная страница  » 
А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ы Э Ю Я
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
0 1 2 3 4 5 6 7 8 9 Home