Template Toolkit

Template Toolkit

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

«Легковесная» в данном случае обозначает, что взаимодействие с пользователем, работа с базой данных, вызов шаблонов на обработку и отображение производится через perl-скрипты, содержащие всю логику работы (см. бизнес-логика), а сами шаблоны отвечают преимущественно за дизайн/представление.

Это — в отличие от «полновесных» систем разработки (frameworks), в которых Перл очень тесно интегрируется с HTML, и предоставляющих дополнительную функциональность для работы с веб-страницами, например сессии.

Следует, однако, отметить, что с точки зрения скорости работы, согласно результатам тестов, библиотека не является «легковесной» и заметно проигрывает другим распространенным шаблонизаторам.

Содержание

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

В Template Toolkit используется свой язык, обладающий богатым, но простым для изучения синтаксисом.

Простой пример шаблона:

<html>
<head><title>[% title %]</title></head>
<body>
  Вывод списка:
  <ul>
  [% FOREACH i = items %]
    <li>[% i %]</li>
  [% END %]
  </ul>
</body>
</html>

И скрипт, вызывающий его:

# !/usr/bin/perl
use Template;
 
my $tt2 = new Template({
    INCLUDE_PATH=>'/path/to/templates' #Путь к каталогу с шаблонами
});
my $vars={
    title=>'Заголовок страницы',
    items=>['Один', 'Два', 'Три']
};
 
print "Content-type: text/html\n\n";
$tt2->process("page1.htm", $vars);

По умолчанию в качестве разделителей блоков кода используются [% и %]. Но можно использовать любую другую последовательность символов, например <% %>, <? ?> и так далее. Причём изменять последовательность можно в любое время прямо внутри шаблона.

Ниже представлен список некоторых возможностей Template Toolkit:

  • Позволяет без затруднений разрабатывать страницы сайта по любой схеме: сверху вниз, снаружи внутрь и изнутри наружу.
  • Использует унифицированный синтаксис для всех типов данных:

hash.key — обращению к ключу хэша
array.1 — элемент массива с индексом 1
object.method — вызов метода объекта
Таким образом, получается, что неважно, что содержится в переменной: строка, функция, блок или что-то другое — всё вызывается единообразно.

  • Для ускорения работы шаблоны при первой обработке компилируются в перл-скрипты, и, в зависимости от настроек, сохраняются на диск или в память. Благодаря этому скорость работы движка очень велика и близка к чистому Перлу.
  • Позволяет для нескольких шаблонов использовать общие данные: настройки, переменные, константы, функции, и так далее.
  • Развитая система написания плагинов и фильтров позволяет легко написать собственные плагины/фильтры, или использовать множество уже существующих (поставляются вместе с Template Toolkit).
  • Позволяет вставлять внутрь шаблонов «сырой» Перл.
  • В качестве блоков могут выступать как отдельные файлы, так и блоки, определяемые внутри внешнего или текущего файла.
  • Появившееся со второй версии нововведение — «виды» (views), позволяет создавать шаблоны с применением объектно-ориентированного подхода.
  • Может обрабатывать XML файлы, преобразуя их в HTML, и представляя, таким образом, альтернативу XSLT.
  • В поставку входят скрипты-утилиты, позволяющие из произвольного набора файлов-шаблонов сгенерировать требуемый набор HTML-страниц.
  • Хорошая документация, которая многими признаётся «золотым стандартом» документации среди библиотек Перла.

Полный список возможностей Template Toolkit очень велик. Более подробно с ними можно ознакомиться по документации, которую можно найти по ссылкам внизу страницы.

Недостатки

Из-за того, что в Перле присутствуют переменные разных типов, а в Template Toolkit все они вызываются одинаково, возникают неоднозначности.

Есть особенности работы с объектами-хэшами, и объектами-массивами:

При попытке прохода по объекту-массиву через FOREACH выяснится, что в списке будет присутствовать только один элемент — сам объект.

А при обращения к элементу arrayobj.$index, где index — индекс требуемого элемента, Template Toolkit попытается вызвать метод с таким именем. А методов с именами 0, 7, 12 и т. д. в языках программирования, в общем-то, не бывает.

Для решения этих проблем в код класса нужно добавить метод as_list() — именно его Template Tookit вызывает при использовании FOREACH.

sub as_list { [@{$_[0]}] }

Смысл этого кода состоит в том, что берётся сам объект, превращается в обычный массив, и сразу же преобразуется в ссылку на массив — то, что нужно для FOREACH.

Как as_list() помогает при выборке конкретных элементов из объекта?

aref = aref_object.as_list();
aref.0;
aref.1;

Проблемы вызывает присутствие в классе функции AUTOLOAD:

  1. она перехватывает все вызовы виртуальных методов Template Toolkit
  2. так как Template Toolkit пытается сначала найти метод объекта с указанным именем, и только при неудаче — найти одноимённый ключ хэша, становится понятно, что AUTOLOAD также перехватывает все вызовы к ключам хэша

Вторую проблему можно решить так:

sub AUTOLOAD {
   my ($sub_name) = $AUTOLOAD=~/([^:]+)$/; #Найти имя запрашиваемого метода
   if (exists $_[0]{$sub_name}) { #Если у объекта существует ключ с именем  $sub_name,
      return $_[0]{$sub_name}      #то вернуть его
   }
}

Подсказки

Имеется массив aref, и переменная ix. Мы хотим вывести элемент массива по индексу, указанному в ix.

Так будет неправильно:

aref.ix

В этом случае будет произведена попытка вызова метода ix.

А так — правильно:

aref.$ix

Знак доллара $ используется для подстановки значения переменной в выражение.

Примечания

При том, что Template Tookit считается «легковесной» шаблонной библиотекой, развитый синтаксис и большой набор дополнительных возможностей обозначают уклон в сторону «тяжеловесов».

Хотя вызов шаблона на обработку осуществляется из перл-скрипта, существует возможность встраивать команды Template Toolkit прямо в код обычных HTML-страниц, которые пользователи запрашивают напрямую. Для этого надо установить модуль Apache::Template и произвести небольшую настройку сервера Apache.

Авторы

Создатель библиотеки Andy Wardley. Загрузить последнюю версию библиотеки (Template-Toolkit-N.NN.tar.gz) можно на CPAN. Ссылки на ресурсы см. ниже.

Ссылки

Внешние ресурсы

Разработчики, использующие Windows, могут скачать архив всё-в-одном, содержащий Apache 2, Perl 5.x, mod perl 1.99, и множество полезных библиотек, не входящих в стандартную поставку языка Перл, среди которых есть Template Toolkit 2 и Apache::Template. Архив находится здесь: ftp://theoryx5.uwinnipeg.ca/pub/other/

Библиотеки для работы с шаблонами в Perl

  • Легковесные, MVC
    • Template Toolkit
    • HTML::Template
    • Text::Template
    • CGI::FastTemplate
  • Системы разработки приложений
    • Embperl
    • Apache::ASP
    • HTML::Mason

Wikimedia Foundation. 2010.

Игры ⚽ Нужно сделать НИР?

Полезное


Смотреть что такое "Template Toolkit" в других словарях:

  • Template-Toolkit — Entwickler Andy Wardley Aktuelle Version 2.22 (21. Juli 2009) Betriebssystem Linux, Mac OS X, Windows, u. a. Kategorie Programm und Bibliothekssammlun …   Deutsch Wikipedia

  • Template Toolkit — The Template Toolkit (TT) is a fast and flexible template engine used primarily for building web sites but also suitable for any type of digital document creation like PDF or LaTeX. Template Toolkit, or TT for short, is based on a mini language,… …   Wikipedia

  • Toolkit — may refer to an assembly of tools.It may also refer to:* Widget toolkit * Toolkits for User InnovationSpecific toolkits include:* Abstract Window Toolkit * Accessibility Toolkit * Adventure Game Toolkit * B Toolkit * Battlefield Mod Development… …   Wikipedia

  • Template engine (web) — A (web) template engine is software that is designed to process web templates and content information to produce output web documents. It runs in the context of a template system.pecific types of template engines Template engine is ordinarily… …   Wikipedia

  • Template processor — A template processor (also known as a template engine or a template parser )is software or a software component that is designed to combine one or more templates with a data model to produceone or more result documents.cite book last = Niemeyer… …   Wikipedia

  • Toolkit — Sur les autres projets Wikimedia : « Toolkit », sur le Wiktionnaire (dictionnaire universel) Toolkit est un mot anglais qui est utilisé en informatique et le plus souvent dans le contexte des interfaces graphiques. Ce mot, qui… …   Wikipédia en Français

  • Template Engine — Dieser Artikel wurde aufgrund von inhaltlichen Mängeln auf der Qualitätssicherungsseite der Redaktion Informatik eingetragen. Dies geschieht, um die Qualität der Artikel aus dem Themengebiet Informatik auf ein akzeptables Niveau zu bringen. Hilf… …   Deutsch Wikipedia

  • Template Numerical Toolkit — The Template Numerical Toolkit (or TNT) is a software library for manipulating vectors and matrices in C++ created by the U.S. National Institute of Standards and Technology. TNT provides the fundamental linear algebra operations (for example,… …   Wikipedia

  • Template Numerical Toolkit — У этого термина существуют и другие значения, см. TNT (значения). Template Numerical Toolkit (TNT; рус. Библиотека численных шаблонов)  библиотека шаблонов в языке программирования C++ для манипуляций одномерными, двумерными и трёхмерными… …   Википедия

  • Windows Template Library — Тип библиотека (программирование) Разработчик Nenad Stefanovic Написана на С++ Операционная система Microsoft Windows Последняя версия WTL 8.1.11324 (21.11.2011) Лицензия …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»