这些 tal:xxx 命令有什么作用?

What does these tal:xxx commands do?

谁能解释一下这些 "tal" 命令在我的 html 标签中的作用?我了解到它们是文本属性语言命令,但不清楚它们的作用。

<div tal:condition="myvar">
 Your command returns:<br><tal:block tal:content="myvar"></tal:block>
</div>

他们在评估条件吗?或占位符?请解释。

您可能熟悉 "traditional" 看起来像这样的模板语言:

<?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 感知的并且将产生有保证的良好输出。 "Traditional" 模板语言本质上只是连接字符串,这会让您面临各种语法问题。 TAL 在抽象 DOM 级别上工作,与浏览器所做的相同。
  2. 您的模板始终是 "just HTML",因此您可以在不需要 PHP 或任何其他模板处理器的情况下对其进行处理。前端设计师可以完全独立于任何后端来设计和编码模板,然后将完成的代码交给后端开发人员,后者将把它与其余代码挂钩。