Handlebars初次了解

简介: Handlebars初次了解

3.jpg

特点


  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. 更改上下文: ../ 获取父级



相关文章
|
7月前
|
敏捷开发 人工智能 前端开发
让你爽到飞起的【懒人插件AutoScssStruct4Vue】VSCode根据template的标签目录自动一键生成CSS/SCSS/LESS结构,敏捷开发必备插件!!!
让你爽到飞起的【懒人插件AutoScssStruct4Vue】VSCode根据template的标签目录自动一键生成CSS/SCSS/LESS结构,敏捷开发必备插件!!!
|
4月前
|
JavaScript
基于Vue2超简单实现DIY定制的步骤条
这篇文章介绍了如何在Vue 2中实现一个自定义设计的步骤条组件,包括子组件的设计和在父页面中的使用示例。
97 1
基于Vue2超简单实现DIY定制的步骤条
|
JavaScript 前端开发 关系型数据库
7 种最棒的 Vue Loading 加载动画组件测评与推荐 - 穷尽市面上所有加载动画效果(Vue loader)类型 - 卡拉云
Vue Loading 加载动画组件 (Vue-loader) 看起来很简单不重要,实际上它是保证用户留存的关键一环。选择好 Loading 加载动画,用户留存率翻倍。本文介绍 7 种不同的加载动画 UI 效果(Vue loader),每一种都有其对应的使用场景。举例,旋转加载动画适合短时间加载,旋转加载还能更细分,比如在按钮上的旋转加载,适合提交数据的极短时间,旋转动画在全局的适合多表格数据加载,旋转动画图片可自定义的适合高度定制化的 APP / 网站等。再举例,进度条类的加载动画适合长时间加载,进度条类也可以更细分,比如有蒙层的进度条,有加载进度条带取消按钮,有加载进度条放在网页顶部,
2438 0
|
JavaScript 前端开发
Vue和React项目上传宝塔刷新404解决方法
Vue和React项目上传宝塔刷新404解决方法
262 0
jira学习案例36-ccs-in-js创建自定义组件
jira学习案例36-ccs-in-js创建自定义组件
78 0
jira学习案例36-ccs-in-js创建自定义组件
|
JavaScript
🌵Vue本地应用(内容绑定,事件绑定)
🌵Vue本地应用(内容绑定,事件绑定)
64 9
🌵Vue本地应用(内容绑定,事件绑定)
|
缓存 JavaScript 前端开发
js:Vue单页面应用SPA项目代码更新提示用户刷新页面
js:Vue单页面应用SPA项目代码更新提示用户刷新页面
311 0
|
JavaScript IDE 开发工具
Vue-DevTool这么方便,你会用吗?
这是Vue的调试工具,我这里是最新版本。
128 0
|
移动开发 算法 前端开发
tink.js # pixi辅助插件 — 中文翻译教程
tink.js # pixi辅助插件 — 中文翻译教程
167 0
|
JavaScript 前端开发
生产环境调用vue devtool的脚本
前端开发中大多常用技术栈都是简单易上手的vue。平时项目开发中配合使用vue-devtools如鱼得水。但是现网环境出现状况,如何快速定位问题呢?下面的操作让你调试现网环境就像开发时一样。
352 0
下一篇
DataWorks