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



相关文章
|
4月前
|
JavaScript
文本,wangEditor5的基本使用,开发文档地址,wangEditor5用于Vue3项目,想要使用好wangEditor项目,得看开发文档
文本,wangEditor5的基本使用,开发文档地址,wangEditor5用于Vue3项目,想要使用好wangEditor项目,得看开发文档
|
6月前
|
存储 JSON 资源调度
next.js博客搭建_react-markdown渲染内容(第三步)
next.js博客搭建_react-markdown渲染内容(第三步)
97 1
|
6月前
|
资源调度 JavaScript
终于被我搞掂了 Vue3 + Element 的正确打开方式(直接拿来就用)
终于被我搞掂了 Vue3 + Element 的正确打开方式(直接拿来就用)
55 0
|
11月前
|
SQL 资源调度 前端开发
VUE3(三十四)项目启动sass报错
我有个不是很好的习惯,每天启动前端项目的时候,都会把项目中使用到的组件更新到最新的版本。其实这样是非常不好的。为什么呢?新版本除了修复之前的问题,也有可能会带来新的问题。 正常的做法大概是,等新版本发布了一段时间之后,再去更新,这样就相对保险一丢丢。 而且,目前前端项目中组件依赖太多,各个组件之间,难免会有兼容性的问题。今天在将组件更新到最新版本之后,启动项目,就遇到了问题。 报错如下: bash 复制代码 ERROR in ./src/pages/porder/index.scss (./node_modules/css-loader/dist/cjs.js!./node_modules/s
289 1
|
JavaScript 前端开发
开心档之Vue.js 样式绑定
开心档之Vue.js 样式绑定
59 2
|
JavaScript 前端开发
Vue和React项目上传宝塔刷新404解决方法
Vue和React项目上传宝塔刷新404解决方法
246 0
|
前端开发 JavaScript Java
react 打包后,项目部署完毕,刷新页面报错(404)
react 打包后,项目部署完毕,刷新页面报错(404)
431 0
|
JavaScript 前端开发 关系型数据库
7 种最棒的 Vue Loading 加载动画组件测评与推荐 - 穷尽市面上所有加载动画效果(Vue loader)类型 - 卡拉云
Vue Loading 加载动画组件 (Vue-loader) 看起来很简单不重要,实际上它是保证用户留存的关键一环。选择好 Loading 加载动画,用户留存率翻倍。本文介绍 7 种不同的加载动画 UI 效果(Vue loader),每一种都有其对应的使用场景。举例,旋转加载动画适合短时间加载,旋转加载还能更细分,比如在按钮上的旋转加载,适合提交数据的极短时间,旋转动画在全局的适合多表格数据加载,旋转动画图片可自定义的适合高度定制化的 APP / 网站等。再举例,进度条类的加载动画适合长时间加载,进度条类也可以更细分,比如有蒙层的进度条,有加载进度条带取消按钮,有加载进度条放在网页顶部,
2406 0
|
JavaScript 前端开发
vue视频教程系列第二十五节——如何创建store.js
  视频加载中...   Store.js的使用,分为以下几个步骤:   引入store.js   Import store from ‘../vuex/store.js’   注册store在DOM中使用   {{ this.$store.state.count }}
312 0
|
Web App开发 前端开发 JavaScript