|
ru.cgi.perl- RU.CGI.PERL ------------------------------------------------------------------ From : Alexander Kostiuchenko 2:463/672.419 26 Apr 2004 09:19:11 To : Konstantin Tokar Subject : шаблонник посоветуйте -------------------------------------------------------------------------------- Как-то раз (а точнее 21 Apr 04 в 23:13) Konstantin Tokar писал(а) к Alexander Kostiuchenko: >> template-toolkit уже сказали, посоветую еще Template::Magic глянуть. >> Он гораздо более легковесный (без особой потери в функциональности) и, KT> Hасчёт функциональности - ты не смотрел описание template-toolkit У меня на ТТ несколько проектов крутится, так что возможности я его вполне представляю. Hасчет функциональности - я, наверное, неудачно выразился. Да, у TT по сравнению с T::Magic гораздо более мощный язык, богаче возможности по манипулированию данными и т.д. В основном это потому, что у T::M языка по сути нет, а манипулирование данными отсутствует вообще. Там другая модель работы с шаблонами. И если писать в соответствии с этой моделью - действительно потерь в функциональности не будет. Кстати, простота TM'овских шаблонов - залог скорости как парсинга, там и процессинга (TT'шная компиляция в Perl'овый код - это, конечно, концептуально правильно... только вот скорость последующего выполнения, учитывая оверхед на повторный парсинг перлового кода, как бы не блещет). >> важно, реализует другую парадигму работы с данными для шаблонов >> (pull; в TT же, как правило, push). Hа практике это значит меньше >> кода на передачу данных в шаблон + более экономный расход памяти (в >> случаях вроде твоих "безразмерных таблиц" - существенно более KT> Хорошо бы сравнить - что-то не верится, что для тулкита вообще размер KT> в памяти зависит от размера таблицы , но безразмерные таблицы KT> настолько плохо отображаются в браузерах, что их наличие - тревожный KT> признак. А тысячи строк TT делает легко. Для процессинга шаблона TT нужен готовый набор данных, некоторая структура, которая память уже занимает. TM же умеет как брать готовые данные (при этом даже не нужно передавать ссылки на них - мизерная, конечно, но тоже экономия ;), так и, что более важно, вызывать функции, возвращающие эти данные. При этом на момент процессинга каждого блока в шаблоне память занимают только нужные для этого блока данные, ничего лишнего. В какой-то мере это можно и в TT сделать через передачу в шаблон ссылок на ф-ии/обьекты/tied-переменные, но для достижения аналогичной TM функциональности прийдется написать свою реализацию Stash (что не очень хорошо хотя бы из-за заведомо меньшей по сравнению с Stash::XS скорости). Hу и насчет "больших таблиц" (любых крупных массивов данных) - в TM можно не держать всю структуру в памяти, а генерить построчно со скармливанием сразу же в шаблон. А еще TT всегда буферизирует вывод, TM же умеет сбрасывать обработанные куски шаблона сразу. Hу и на более высоком уровне - pull-модель хорошо подходит для сайтов портального типа, где один и тот же блок может использоваться на разных страницах. Достаточно обьявить его один раз в коде и дать кодеру название, а в каких шаблонах его использовать (и использовать ли вообще) - это уже на усмотрение последнего. В TT для достижения такого же прийдется сделать сильно больше телодвижений. -- mailto: random at binet.kiev.ua //Александр --- * Origin: useless (2:463/672.419) Вернуться к списку тем, сортированных по:
Архивное /ru.cgi.perl/4029408cf68d.html, оценка из 5, голосов 10
|