拓展阅读
java 表达式引擎
logstash 日志加工处理-08-表达式执行引擎 AviatorScript+MVEL+OGNL+SpEL+JEXL+JUEL+Janino
QLExpress 阿里表达式引擎系统学习
什么是 Handlebars?
Handlebars 是一种简单的模板语言。
它使用模板和输入对象生成 HTML 或其他文本格式。Handlebars 模板看起来像带有嵌入的 Handlebars 表达式的常规文本。
模板
{% raw %}
<p>{{firstname}} {{lastname}}</p>
{% endraw %}
Handlebars 表达式是 {% raw %}{{,一些内容,后跟一个 }}{% endraw %}。
当执行模板时,这些表达式将被输入对象中的值替换。
了解更多:表达式
安装
测试 Handlebars 的最快方法是从 CDN 加载它并嵌入到 HTML 文件中。
{% raw %}
<!-- 从 CDN 包含 Handlebars -->
<script src="https://cdn.jsdelivr.net/npm/handlebars@latest/dist/handlebars.js"></script>
<script>
// 编译模板
var template = Handlebars.compile("Handlebars <b>{{doesWhat}}</b>");
// 执行已编译的模板并将输出打印到控制台
console.log(template({ doesWhat: "rocks!" }));
</script>
{% endraw %}
警告
这种方法适用于小型页面和测试。当面向真实的生产系统时,有几种其他使用 Handlebars 的方法。
了解更多:安装
语言特性
简单表达式
如前所示,以下模板定义了两个 Handlebars 表达式
模板
{% raw %}<p>{{firstname}} {{lastname}}</p>{% endraw %}
如果应用于输入对象
输入
{
firstname: "Yehuda",
lastname: "Katz",
}
则表达式将被相应属性替换。结果如下
输出
{% raw %}<p>Yehuda Katz</p>{% endraw %}
嵌套输入对象
有时,输入对象包含其他对象或数组。例如:
输入
{
person: {
firstname: "Yehuda",
lastname: "Katz",
},
}
在这种情况下,您可以使用点符号来访问嵌套属性
模板
{% raw %}{{person.firstname}} {{person.lastname}}{% endraw %}
了解更多:表达式
一些内置助手允许您将当前上下文更改为嵌套对象。然后,您可以像访问根对象一样访问此对象
评估上下文
内置的块助手 each 和 with 允许您更改当前评估上下文。
with 助手深入到对象属性中,使您可以访问其属性
模板
{% raw %}
{{#with person}}
{{firstname}} {{lastname}}
{{/with}}
{% endraw %}
输入
{
person: {
firstname: "Yehuda",
lastname: "Katz",
},
}
each 助手遍历数组,允许您通过简单的 Handlebars 表达式访问每个对象的属性。
模板
{% raw %}
<ul class="people_list">
{{#each people}}
<li>{{this}}</li>
{{/each}}
</ul>
{% endraw %}
输入
{
people: [
"Yehuda Katz",
"Alan Johnson",
"Charles Jolley",
],
}
了解更多:内置助手
模板注释
您可以在 Handlebars 代码中使用注释,就像在代码中一样。由于通常存在一定程度的逻辑,这是一种良好的实践。
注释不会出现在生成的输出中。如果希望注释显示出来,只需使用 HTML 注释,它们