Что делают эти команды 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, Он делает то же самое, что и два других примера выше.

Преимущество двоякое:

  1. Вы гарантированно получите 100% действительный вывод HTML, так как сама система шаблонов требует действительный HTML, поддерживает HTML и будет обеспечивать гарантированно хороший вывод. "Традиционные" языки шаблонов - это, по сути, просто конкатенация строк, что открывает перед вами все виды синтаксических проблем. TAL работает на абстрактном уровне DOM, то же самое делает браузер.
  2. Ваш шаблон всегда "просто HTML", так что вы можете работать с ним без PHP или какого-либо другого процессора шаблонов. Дизайнер внешнего интерфейса может разрабатывать и кодировать шаблон полностью независимо от какого-либо бэкэнда, а затем передавать готовый код бэкэнд-разработчику, который подключит его к остальному коду.
Другие вопросы по тегам