首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Handlebars初次了解

Handlebars初次了解

作者头像
前端小鑫同学
发布2022-12-25 11:01:00
发布2022-12-25 11:01:00
5470
举报

特点

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

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

定义模板

简单的表达式
代码语言:javascript
复制
var template = Handlebars.compile(`
  <p>简单的表达式</p>
  <p>
      {{firstname}}-{{lastname}}
  </p>
`);
var output = template({
  firstname: "xiao",
  lastname: "xin"
})
嵌套输入对象
代码语言:javascript
复制
var template = Handlebars.compile(`
  <p>嵌套输入对象</p>
  <p>
      {{person.firstname}}-{{person.lastname}}
  </p>
`);
var output = template({
  person: {
    firstname: "tong",
    lastname: "xue"
  }
})
计算上下文
with

省略上下文

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

使用this代替上下文

代码语言:javascript
复制
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"
  ]
})
模板注释
代码语言:javascript
复制
<!-- 编译到结果中 This comment will show up as HTML-comment -->
{{! This comment will not show up in the output}}
{{!-- This comment may contain mustaches like }} --}}
自定义助手
代码语言:javascript
复制
// 相当于过滤器进行内容格式化
Handlebars.registerHelper('loud', function (aString) {
  return aString.toUpperCase()
})
// 获取到对象后可以做更多的处理
Handlebars.registerHelper('print_person', function () {
  return this.name
})
块助手代码
代码语言:javascript
复制
// 可定制性高
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. 更改上下文: ../ 获取父级
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-04-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 特点
  • 定义模板
    • 简单的表达式
    • 嵌套输入对象
    • 计算上下文
      • with
    • each
    • 模板注释
    • 自定义助手
    • 块助手代码
    • 其他
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档