31

我认为它用于引用 php 的东西,但我不确定。我在 html 文件中看到其中一些是这样写的:

{% if ban.reason %}
    <p class="reason">
        {{ ban.reason }}
    </p>
{% endif %}
4

2 回答 2

32

它是一个模板引擎系统,其语法基于jinja。另一个代码示例:

{% extends "layout.html" %}

{% block body %}
    <ul>
        {% for user in users %}
            <li><a href="{{ user.url }}">{{ user.username }}</a></li>
        {% endfor %}
    </ul>
{% endblock %}

来自维基百科:

使用模板引擎的好处包括:

  • 鼓励将源代码组织成可操作的不同层(例如,参见 MVC)
  • 通过减少不必要的重复劳动来提高生产力
  • 通过允许基于技能组合(例如,艺术与技术)的工作分离来增强团队合作

典型特征

模板引擎通常包含大多数高级编程语言共有的功能,重点是处理纯文本的功能。这些功能包括:
  • 变量和函数
  • 文本替换
  • 文件包含(或嵌入)
  • 条件评估和循环

(维基百科结束)


PHP 有几个模板引擎。其中之一是 [**Twig**](http://twig.sensiolabs.org/)。

例如,不要这样写:

<?php echo $var ?>
<?php echo htmlspecialchars($var, ENT_QUOTES, 'UTF-8') ?>

您可以使用 Twig 执行此操作:

{{ var }}
{{ var|escape }}

另一个例子:

<ul id="navigation">
    <?php if (navigation) { ?>
        <?php foreach ($navigation as $item) { ?>
            <li><a href="<?php echo $item->href; ?>"><?php echo $item->caption; ?></a></li>
        <?php } ?>
    <?php } ?>
</ul>

在模板引擎中:

<ul id="navigation">
    {% for item in navigation %}
        <li><a href="{{ item.href }}">{{ item.caption }}</a></li>
    {% endfor %}
</ul>

它也可以是像blueimp这样的Javascript 模板。另一个代码示例:

<title>{%=o.title%}</title>
<h3><a href="{%=o.url%}">{%=o.title%}</a></h3>
<h4>Features</h4>
<ul>
{% for (var i=0; i<o.features.length; i++) { %}
    <li>{%=o.features[i]%}</li>
{% } %}
</ul>

“o”(小写字母)是对模板函数的数据参数的引用。

于 2013-06-01T00:58:22.787 回答
4

此语法由读取此文件并生成最终 HTML 的模板引擎使用。其中一些可能是 Django 或 Smarty,就像 @karthikr 评论的那样。

于 2013-06-01T00:57:06.970 回答