Handlebars---前端引擎模版

Handlebars—前端引擎模版

博客说明

文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢!

简介

Handlebars 是 JavaScript 一个语义模板库,通过对view和data的分离来快速构建Web模板。它采用"Logic-less template"(无逻辑模版)的思路,在加载时被预编译,而不是到了客户端执行到代码时再去编译, 这样可以保证模板加载和运行的速度

官网

Handlebars官网地址

http://handlebarsjs.com./

特点

优势

Handlebars使用起来方便简洁,可快速创建模板;

扩展性强,可根据自己的需要自定义Helpers,例如常见的类型转换、时间格式转换等;

视图与逻辑分离,解耦性强;

被广泛推广,轻量级、兼容性强;

劣势

代码不清晰,比较混乱,可读性差

拓展性不强,如果需要填充的内容数据类型不够直观、需要转换,这种写法转换起来比较麻烦

假设页面布局结构变动,那么逻辑代码维护起来麻烦

使用

使用CDN

<script type="text/javascript" src="//cdn.bootcss.com/handlebars.js/4.0.6/handlebars.js"></script>
案例

each block helper

可以使用内置的{{#each}}helper遍历列表块内容,用this来引用遍历的元素

<ul> {{#each name}} <li>{{this}}</li> {{/each}}</ul>

这里的this指的是数组里的每一项元素,和上面的Block很像,但原理是不一样的这里的name是数组,而内置的each就是为了遍历数组用的,更复杂的数据也同样适用。

if else block helper

{{#if}}就你使用JavaScript一样,你可以指定条件渲染DOM,如果它的参数返回false,undefined, null, “” 或者 [] (a “falsy” value), Handlebar将不会渲染DOM,如果存在{{#else}}则执行{{#else}}后面的渲染

{{#if list}}
<ul id="list"> 
{{#each list}} 
<li>{{this}}</li> 
{{/each}}</ul> 
{{else}} 
<p>{{error}}</p>
{{/if}}

这里{{#if}}判断是否存在list数组,如果存在则遍历list,如果不存在输出错误信息

unless block helper

{{#unless}}这个语法是反向的if语法也就是当判断的值为false时他会渲染DOM 例如:

{{#unless data}}
<ul id="list"> {{#each list}} 
<li>{{this}}</li> {
{/each}}</ul> {{else}} 
<p>{{error}}</p>
{{/unless}}

with block helper

{{#with}}一般情况下,Handlebars模板会在编译的阶段的时候进行context传递和赋值。使用with的方法,我们可以将context转移到数据的一个section里面(如果你的数据包含section)。 这个方法在操作复杂的template时候非常有用。

<div class="entry"> 
<h1>{{title}}</h1> 
{{#with author}} <
h2>By {{firstName}} {{lastName}}</h2> 
{{/with}}</div>

感谢

Handlebars

百度百科

以及勤劳的自己

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

归子莫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值