Handlebars初次了解

默认文件1619173930600.png

特点

  1. 高效地构建语义化模板
  2. Handlebars 与 Mustache 模板基本兼容。
  3. Handlebars 会将模板编译为 JavaScript 函数, 执行速度快。

安装

  1. 通过CDN引入:

<script src="https://cdn.jsdelivr.net/npm/handlebars@latest/dist/handlebars.js"></script>

定义模板

简单的表达式

var template = Handlebars.compile(`
<p>简单的表达式</p>
<p>
{{firstname}}-{{lastname}}
</p>
`);
var output = template({
firstname: "xiao",
lastname: "xin"
})

嵌套输入对象

var template = Handlebars.compile(`
<p>嵌套输入对象</p>
<p>
{{person.firstname}}-{{person.lastname}}
</p>
`);
var output = template({
person: {
firstname: "tong",
lastname: "xue"
}
})

计算上下文

with

省略上下文

var template = Handlebars.compile(`
<p>计算上下文</p>
<p>
{{#with person}}
{{firstname}}-{{lastname}}
{{/with}}
</p>
`);
var output = template({
person: {
firstname: "tong",
lastname: "xue"
}
})

each

使用this代替上下文

var template = Handlebars.compile(`
<p>计算上下文</p>
<p>
{{#each people}}
<li>{{this}}</li>
{{/each}}
</p>
<p>
{{#each persons}}
<li>{{this.name}}</li>
{{/each}}
</p>
`);
var output = template({
persons: [
{ name: 'zhang' },
{ name: 'wang' }
],
people: [
"Yehuda Katz",
"Alan Johnson",
"Charles Jolley"
]
})

模板注释

<!-- 编译到结果中 This comment will show up as HTML-comment -->
{{! This comment will not show up in the output}}
{{!-- This comment may contain mustaches like }} --}}

自定义助手

// 相当于过滤器进行内容格式化
Handlebars.registerHelper('loud', function (aString) {
return aString.toUpperCase()
})
// 获取到对象后可以做更多的处理
Handlebars.registerHelper('print_person', function () {
return this.name
})

块助手代码

// 可定制性高
Handlebars.registerHelper("list", function (items, options) {
const itemsAsHtml = items.map(item => "<li>" + options.fn(item) + "</li>");
return "<ul>\n" + itemsAsHtml.join("\n") + "\n</ul>";
});

其他

  1. HTML 转义 使用{{{三成包裹}}}
  2. 更改上下文: ../ 获取父级
posted @   前端小鑫同学  阅读(24)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示