HTML::Template

Материал из Seo Wiki - Поисковая Оптимизация и Программирование

Перейти к: навигация, поиск

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

Содержание

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

В 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">">

Позволяет делать 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_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

Ссылки

Источник — «http://www.sbup.com/wiki/HTML::Template»
Личные инструменты

Served in 0.086 secs.