
特点
- 高效地构建语义化模板
- Handlebars 与 Mustache 模板基本兼容。
- Handlebars 会将模板编译为 JavaScript 函数, 执行速度快。
安装
- 通过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>"; |
| }); |
其他
- HTML 转义 使用{{{三成包裹}}}
- 更改上下文: ../ 获取父级
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)