Template Toolkit
Template::Toolkit (а также TTk или просто TT) — шаблонизатор, Perl-библиотека для отделения уровня представления от уровня приложения. Короче говоря, относительно простой язык программирования, упрощающий генерацию динамических страниц, в основном, хотя и не обязательно — HTML-страниц.
Статья Template Toolkit в русскоязычной Википедии говорит нам о том, что по сути своей это «легковесная» библиотека, в отличие от «полновесных» фреймворков для построения веб-приложений.
«Не используйте Template Toolkit!»
Или же очередная серия «Заметок об идиотизме».
Главные минусы TT — его производительность, и, как это ни парадоксально — богатство возможностей, провоцирующее на создание сложных шаблонов и перенос в них половины логики приложения. В итоге идея о простых шаблонах, которые может редактировать даже дизайнер, накрывается медным тазом. Для примера достаточно взглянуть на шаблоны и код Bugzilla.
Производительность TT страдает в первую очередь от Template::Stash (от англ. stash — тайник, «заначка») — зачем-то введённого отдельного уровня хранения данных — по сути, собственной реализации хеш-таблицы со множеством наворотов, проверок и вообще лишних действий, созданной, по всей видимости, для обеспечения нетривиальных возможностей вроде установки функции-getter’а вместо значение переменной шаблона (возможность, которой за весь опыт веб-разработки лично мне пользоваться не приходилось). В Stash при каждом получении значения какой-либо переменной передаётся ссылка на массив — путь к этой переменной, что как минимум сразу делает невозможным «компилированный» доступ к переменным.
Так как обычный Stash — просто кошмар неиллюзорный, а Template Toolkit был (да и до сих пор) весьма популярен, в районе года 2000 появилась его XS-версия (то есть, переписанная на C) — Template::Stash::XS. После этого TT-шаблонам, всё-таки, полегчало. Но, во-первых, Stash никогда не был единственным замедляющим работу TT уровнем, во-вторых, даже Stash::XS всё равно работает не так быстро, как мог бы, а в-третьих, Stash::XS долгое время имел различные баги — например, поддержка UTF-8 в Template::Stash::XS появилась только 4 июля 2009 года.
Ссылки
- VMX-Template — Описание собственного (моего) шаблонизатора.
- http://ctpp.havoc.ru/template_benchmarks.html - Сравнение производительности Perl-шаблонизаторов авторами CTPP. В тесте «всех порвал», разумеется, именно CTPP.