如何在Twig模板中包含Handlebars.js?

时间:2018-03-15 12:21:19

标签: php templates twig handlebars.js

我正在使用Twig和Handlebars.js,并且遇到了冲突。我发现了两个解决方案一个被认为比另一个更合适,还是有第三个更合适的解决方案?如果使用我的选项1,是否有任何推荐的命名标准将把手模板与树枝模板相关联?

选项1使用twig source

my_twig_template1.html

{% block content %}
<h1>Hello</h1>
<p>{{ someTwigPhpVar }}</p>
{{ source('my_handlebars_template1.html') }}
{% endblock %}

my_handlebars_template1.html

<script id="my-handlebars-item-1" type="text/x-handlebars-template">
    {{someHandleBarVariable}}
</script>

<script id="my-handlebars-item-2" type="text/x-handlebars-template">
    {{someHandleBarVariable}}
</script>

选项2使用twig逐字

my_twig_template2.html

{% block content %}
<h1>Hello</h1>
<p>{{ someTwigPhpVar }}</p>

{% verbatim %}

<script id="my-handlebars-item-1" type="text/x-handlebars-template">
    {{someHandleBarVariable}}
</script>

<script id="my-handlebars-item-2" type="text/x-handlebars-template">
    {{someHandleBarVariable}}
</script>

{% endverbatim %}

{% endblock %}

1 个答案:

答案 0 :(得分:2)

我不知道是否有一般偏好,但两者看起来都没问题。我更喜欢选项2,只有几行Handlebars代码和选项1在其他情况下(使用Handlebars代码的大部分)。我会将Handlebars文件(选项1)放入名为handlebars/的文件夹中,以便您拥有handlebars/template1.html等。

另一种选择是使用变量表达式输出变量分隔符({{}},如documentation section about escaping中所述)或整个Handlebars表达式:

{% block content %}
    <h1>Hello</h1>
    <p>{{ someTwigPhpVar }}</p>

    <script id="my-handlebars-item-1" type="text/x-handlebars-template">
        {{ '{{' }} someHandleBarVariable {{ '}}' }}
    </script>

    <script id="my-handlebars-item-2" type="text/x-handlebars-template">
        {{ '{{someHandleBarVariable}}' }}
    </script>
{% endblock %}

如果您只输出几个Handlebars变量,这很方便,所以这比使用单独的文件或使用verbatim标记更简洁。