Разные шаблонизаторы. Плюсы и минусы.

jonjonson

Охренеть
когда сборка происходит на клиенте, тогда экономится трафик и увеличивается скорость
Гы, послать данные и директивы для их сборки - это меньше чем послать результат?

И еще. Типа машина пользователя работает быстрее сервера?
 

Фанат

oncle terrible
Команда форума
jonjonson
он имеет в виду кэширование xsl файла.
при том, что, в общем-то, объём хml, в силу специфики формата, примерно равен объему конечного html
 

AmdY

Пью пиво
Команда форума
ну, там не только xsl файл кэшируется.
без javascript преобразования происходят на сервере, скорость падает, хотя xml и xsl остаются теми же (это к теме шаблонов).
 

legend

Новичок
Да... далековато отошли от темы) но зато, прочитала много интересного...

Smarty - пхпподобный язык, написанный на пхп, поэтому предпочитаю обходиться без него... Использовала только в одной работе по настоянию клиента. Уж лучше я буду писать шаблоны на php. Тут и работать быстрее будет), а если все грамотно организовать, то и дизайнеру/верстальщику тоже будет удобно.

Xml+xslt - технология не плохая, но есть один большой минус при произношении этой связки многие дизайнеры плакать начинают. Но преимуществ у этой технологии гораздо больше. Автору я бы советовала и ее рассмотреть, как какой-нибудь вариант.

А в общем можно все-таки спросить и у самих дизайнеров/верстальщиков. Т.к. в случае чего, каких-либо недопониманий работы шаблонизатора будет страдать программист, которого задолбают вопросами...

Angerslave
Думай, выбирай чего тебе хочется больше: покоя или скорости)))
 

WP

^_^
legend
> Smarty - пхпподобный язык, написанный на пхп, поэтому предпочитаю обходиться без него..
Логика на грани фантастики))) Smarty - это ДИАЛЕКТ PHP, т.е. компилируемые шаблоны, по сути получается тот же код, но более красивый и заточенный под верстальщика. Мне интересно лицо верстальщика увидевшего PHP-native аналог тега {cycle name=a values="1,2,3"}. Он уедет с пост-советского пространства.
> Xml+xslt - технология не плохая
Плохая, потому что верстальщикам в большинстве случаев не нравится. И возможности куда более скудные у верстальщика.
 

BubenPupen

Новичок
WP
аналог тега {cycle name=a values="1,2,3"}
Я Smarty не знаю, это что-то типа foreach(array(1,2,3) as $value) или что ? Не думаю, что это так ужасно, да и не надо держать верстальщиков за дебилов.
 

WP

^_^
BubenPupen
Нет. Это значит что при каждом обращении к этой конструкции будет выведено значение из заданного множество с индексом равным порядковому номеру обращения.
Т.е. {cycle name=a values="1,2,3"}= {cycle name=a values="1,2,3"}= {cycle name=a values="1,2,3"} выведет 1=2=3.
А ведь еще в шаблоне нужно думать о namespace.

-~{}~ 01.02.07 21:46:

з.ы. ты правда хочешь писать <?=htmlspecialchars($this->tpl_vars['myvar'],ENT_QUOTES)?> вместо {$myvar|escape} ? Которое все равно будет преобразовано в первое. Сравни читабельность кода. Не говоря уже о сложных операциях типа textformat. А просто блок {strip} я молчу.
И как ты собираешься заменить кешированный шаблон:
Код:
......{$string_from_db}.... {dynamic}{$smarty.now|date_format:'%d %m %Y'}{/dynamic}....
Это же нужно написать хендлер для кеширования, с парсером тега {dynamic} ;)
legend и ты просто не знаете Smarty :) А туда же в споры. И я думаю что написать такой парсер у Вас не получится.
 

WP

^_^
=)))))) Интересные получатся шаблончеги. Только тогда уж:
if (!isset($this->_tpl_vars['a'])) {$this->_tpl_vars['a'] = new Cycle(1, 2, 3);}
echo $this->_tpl_vars['a']->next();

А то ведь как будут передаваться переменные между вызовами display()?

Если найдется верстальщик который согласится писать вышеприведенный код вместо {cycle name=a values="1,2,3"} пусть он бросит в меня камень.

З.Ы. про то что в шаблонизаторе эта операция выполнится быстрее я молчу.
 

hermit_refined

Отшельник
А то ведь как будут передаваться переменные между вызовами display()
i think, это совершенно излишне. поскольку не вижу необходимости в сборке разных шаблонов с помощью скрипта и разбрасыванием таким образом логики - а стало быть, и в более чем одном вызове diplay().
 

WP

^_^
А include в шаблонах?

Один display() когда простой скрипт, а когда вызывается сначала шаблон, потом шаблон вызывает модуль, а модуль вызывает другой шаблон - получается много.

Тем более это лишь одно из мнений, и не нужно ограничивать других людей ;) Мало ли кому как удобнее.

-~{}~ 01.02.07 22:26:

Кстати cycle это довольно простой вариант. А вот {strip} проблема неразрешимая))) Не говоря уже об вставленных include'ах, кешировании, {dynamic}, блоках, контекстах, сложности замены {capture} и прочих вкусностях.

И все это при том что цель - упростить жизнь верстальщику и программисту. А если б я увидел new Cycle захотелось бы рядом приписать $sql->query(...);
;)
 

jonjonson

Охренеть
WP, кэширование - это нечто отдельное. То что оно встроено в Smarty, не означает, что его нельзя использовать в нетив php шаблонах. Но оно не часть шаблонизации. Оно отдельно.

Преимущество синтаксиса?.. Это тоже нечто надуманное. Всегда для повторяющихся кусков кода можно отписать хэлпер, как это делается в том же CakePHP.
 

WP

^_^
jonjonson
Использовать-то можно, я не против. Вопрос удобства и замены привычного {dynamic}.
А как же {strip}, {capture}? Вставляемые include?
 

jonjonson

Охренеть
Чем запиь
{$articleTitle|strip}
лучше записи
<?=strip($articleTitle)?>
?
:)
А если заглянуть в код смарти, то увидем, что strip устроен так:
PHP:
function smarty_modifier_strip($text, $replace = ' ')
{
    return preg_replace('!\s+!', $replace, $text);
}
А запись вида:
PHP:
?><table><?
  ?><tr><?
    ?><td><?=$value?></td><?
  ?></tr><?
?></table><?
избавляет нас от {strip}{/strip}
 

WP

^_^
А не геморрой? Столько PHP-тегов писать. Для пробелов тоже :) Особенно верстальщику.
 

Alexander Coral

Новичок
Автор оригинала: jonjonson
А запись вида:
PHP:
?><table><?
  ?><tr><?
    ?><td><?=$value?></td><?
  ?></tr><?
?></table><?
избавляет нас от {strip}{/strip}
Запись такого вида избавляет от пробелов, но сделает слабого психикой дизайнера шизофреником, а у стойкого на психику разовьется артрит и привопальцие ^_^
 

jonjonson

Охренеть
Alexander Coral, гым, есть опыт? Или вы проверяли это? Или всё же мнение чисто теоретическое?
 

BubenPupen

Новичок
WP
if (!isset($this->_tpl_vars['a'])) {$this->_tpl_vars['a'] = new Cycle(1, 2, 3);}
echo $this->_tpl_vars['a']->next();
Зачем это ты так усложняешь ?
PHP:
<? $a = new Cycle(1, 2, 3); ?>
1 - <?=$a->next()?>
2 - <?=$a->next()?>
3 - <?=$a->next()?>
з.ы. ты правда хочешь писать <?=htmlspecialchars($this->tpl_vars['myvar'],ENT_QUOTES)?> вместо {$myvar|escape} ?
PHP:
<?=$Html->escape($myvar);?>
А как же {strip}, {capture}? Вставляемые include?
Ты бы объяснил что это, я бы выссказал свою точку зрения :)
 

WP

^_^
BubenPupen
Вот! В шаблонизатор будет конструкция htmlspecialchars. Что будет быстрее $html->escape или htmlspecialchars? ;)
 

BubenPupen

Новичок
WP
Вот! В шаблонизатор будет конструкция htmlspecialchars. Что будет быстрее $html->escape или htmlspecialchars?
1) Экономия на спичках.
2) Я сам не использовал Smarty, но много где читал, что когда он компилирует шаблоны, в них остается очень много ненужного кода, который, согласись, не ускоряет работу.
Хотя, повторюсь, это все экономия на спичках.

Если же говорить вообще, то обычные шаблоны на php могут всё (абсолютно все) тоже самое что и Smarty (я бы удивился если было бы иначе :D). А реальных примеров плохо читаемого кода на Php в сравнение с этим же кодом на Smarty я не увидел.
 
Сверху