Что делают эти команды tal:xxx?
Может кто-нибудь объяснить мне, что эти команды "tal" делают в моих HTML-тегах? Я узнал, что они являются командами языка текстовых атрибутов, но не ясно, что они делают.
<div tal:condition="myvar">
Your command returns:<br><tal:block tal:content="myvar"></tal:block>
</div>
Они оценивают условия? или заполнители? Пожалуйста, объясни.
1 ответ
Возможно, вы, наверное, знакомы с "традиционными" языками шаблонов, которые выглядят примерно так:
<?php if ($myvar) : ?>
<div>
Your command returns:<br><?php echo $myvar; ?>
</div>
<?php endif; ?>
или же:
{% if myvar %}
<div>
Your command returns:<br>{{ myvar }}
</div>
{% endif %}
или аналогичные варианты этого синтаксиса. Эти языки просто выводят текст и предлагают определенные управляющие структуры, ни больше, ни меньше.
TAL поддерживает HTML, он использует синтаксис HTML как часть собственного синтаксиса.
<div tal:condition="myvar">
Your command returns:<br><tal:block tal:content="myvar"></tal:block>
</div>
Он анализирует HTML так же, как браузер, и использует атрибуты элементов HTML для изменения шаблона. В приведенном выше примере весь div
будет показан или удален в зависимости от значения myvar
, Он делает то же самое, что и два других примера выше.
Преимущество двоякое:
- Вы гарантированно получите 100% действительный вывод HTML, так как сама система шаблонов требует действительный HTML, поддерживает HTML и будет обеспечивать гарантированно хороший вывод. "Традиционные" языки шаблонов - это, по сути, просто конкатенация строк, что открывает перед вами все виды синтаксических проблем. TAL работает на абстрактном уровне DOM, то же самое делает браузер.
- Ваш шаблон всегда "просто HTML", так что вы можете работать с ним без PHP или какого-либо другого процессора шаблонов. Дизайнер внешнего интерфейса может разрабатывать и кодировать шаблон полностью независимо от какого-либо бэкэнда, а затем передавать готовый код бэкэнд-разработчику, который подключит его к остальному коду.