详解handlebars+require基本使用方法


Posted in Javascript onDecember 21, 2016

最近在某网站看到了handlebars.js,出于好奇就百度了下这是神马玩意,结果让我很是欢喜,于是就开始自学下,handlebars就几个方法,蛮简单,言归正传!

以下是基本教学逻辑演示,会附完整代码

测试案例就分为3大块,头、主体、尾:

<div id="header"></div>
<div class="contact" id="contact"></div>
<div id="footer"></div>

先来讲讲id="contact"主体有些什么内容,html代码就不贴了,直接看下图:

详解handlebars+require基本使用方法

handlebars的模版代码如下:

<script id="contact-template" type="text/x-handlebars-template">
 <div class="tit">{{transformat info}}</div>
 {{#tit}}
 <span class="one">{{this}}</span> {{/tit}} {{#student}}
 <span class="one">{{@index}}</span><span class="one">{{name}}</span><span class="one">{{sex}}</span><span class="one">{{age}}</span><span class="one">{{sheight}}</span> {{/student}}
 </script>

图片中的‘2016通讯录'用到了handlebars.registerHelper,代码如下:

Handlebars.registerHelper("transformat", function(value) {
 if(value == "通讯录") {
 return new Handlebars.SafeString("<font color='pink'>2016通讯录</font>")
 } else {
 return "old通讯录";
 }
 });

注册一个helper,value是模版传进来的值,相当于jq的function(),new Handlebars.SafeString是为了防止把html标签输出为文本形式,就是jq下html()和text()的区别。

最后通过渲染将模版输出到网页,代码如下:

$('#contact').html(Handlebars.compile($("#contact-template").html())(data));

如果有通用模版,就是一个模版要调用多次,上面的代码也可以这样写,方便调用:

var contact=Handlebars.compile($("#contact-template").html());
$('#contact').html(contact(data));

其中的data就是json数据,为了方便就自定义了:

var data = {
 "info": "通讯录",
 "tit": ["序号", "姓名", "性别", "年龄", "身高"],
 "student": [{
 "name": "张三",
 "sex": "男",
 "age": 18,
 "sheight": "175"
 }, {
 "name": "李四",
 "sex": "男",
 "age": 22,
 "sheight": "180"
 }, {
 "name": "妞妞",
 "sex": "女",
 "age": 18,
 "sheight": "165"
 }, {
 "name": "袁帅",
 "sex": "男",
 "age": 17,
 "sheight": "173"
 }]
 };

最后效果图如下,其实和刚刚那个主体一样,就是有头有尾而已:

详解handlebars+require基本使用方法

到这里其实handlebars的基础知识就讲解完了,已经能满足日常网站的需求,当然handlebars还有其他的一些功能,可以参考中文手册:

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
脚本安需导入(装载)的三种模式的对比
Jun 24 Javascript
在Ajax中使用Flash实现跨域数据读取的实现方法
Dec 02 Javascript
基于jquery的不规则矩形的排列实现代码
Apr 16 Javascript
JavaScript动态创建link标签到head里的方法
Dec 22 Javascript
SuperSlide标签切换、焦点图多种组合插件
Mar 14 Javascript
jQuery图片切换动画特效
Nov 02 Javascript
canvas实现图片根据滑块放大缩小效果
Feb 24 Javascript
浅谈es6语法 (Proxy和Reflect的对比)
Oct 24 Javascript
JS实现碰撞检测的方法分析
Jan 19 Javascript
node微信开发之获取access_token+自定义菜单
Mar 17 Javascript
jQuery删除/清空指定元素的所有子节点实例代码
Jul 04 jQuery
JS+CSS实现动态时钟
Feb 19 Javascript
JS实现的驼峰式和连字符式转换功能分析
Dec 21 #Javascript
JS实现的RGB网页颜色在线取色器完整实例
Dec 21 #Javascript
js querySelector() 使用方法
Dec 21 #Javascript
简单实现Vue的observer和watcher
Dec 21 #Javascript
使用BootStrap建立响应式网页——通栏轮播图(carousel)
Dec 21 #Javascript
js实现开启密码大写提示
Dec 21 #Javascript
js实现的在线调色板功能完整实例
Dec 21 #Javascript
You might like
PHP使用PDO连接ACCESS数据库
2015/03/05 PHP
php获取指定(访客)IP所有信息(地址、邮政编码、国家、经纬度等)的方法
2015/07/06 PHP
php实现微信支付之现金红包
2018/05/30 PHP
PHP实现获取ip地址的5种方法,以及插入用户登录日志操作示例
2019/02/28 PHP
JavaScript 用cloneNode方法克隆节点的代码
2012/10/15 Javascript
javaScript让文本框内的最后一个文字的后面获得焦点实现代码
2013/01/06 Javascript
js判断两个日期是否相等的方法
2013/09/10 Javascript
关闭浏览器窗口弹出提示框并且可以控制其失效
2014/04/15 Javascript
js截取中英文字符串、标点符号无乱码示例解读
2014/04/17 Javascript
JavaScript获取浏览器信息的方法
2015/11/20 Javascript
分享几种比较简单实用的JavaScript tabel切换
2015/12/31 Javascript
关于微信jssdk实现多图片上传的一点心得分享
2016/12/13 Javascript
Bootstrap栅格系统使用方法及页面调整变形的解决方法
2017/03/10 Javascript
基于Node.js的WebSocket通信实现
2017/03/11 Javascript
在vue-cli创建的项目中使用sass操作
2020/08/10 Javascript
vue绑定数字类型 value为数字的实例
2020/08/31 Javascript
深入解析Python中的__builtins__内建对象
2016/06/21 Python
selenium跳过webdriver检测并模拟登录淘宝
2019/06/12 Python
django多个APP的urls设置方法(views重复问题解决)
2019/07/19 Python
用Python批量把文件复制到另一个文件夹的实现方法
2019/08/16 Python
Python谱减法语音降噪实例
2019/12/18 Python
Python如何使用turtle库绘制图形
2020/02/26 Python
PyTorch在Windows环境搭建的方法步骤
2020/05/12 Python
艺龙旅行网酒店预订:国内、港澳台酒店
2018/06/26 全球购物
美国在线宠物商店:Chewy
2019/01/12 全球购物
Cecil Mode法国在线商店:女性时尚
2021/01/08 全球购物
硕士研究生自我鉴定
2013/11/08 职场文书
在校生自我鉴定
2014/01/23 职场文书
国庆节演讲稿范文2014
2014/09/19 职场文书
刑事辩护授权委托书范本
2014/10/17 职场文书
党员民主生活会材料
2014/12/15 职场文书
爱心募捐感谢信
2015/01/22 职场文书
防汛通知
2015/04/25 职场文书
辞职申请书范本
2019/05/20 职场文书
Python Pandas数据分析之iloc和loc的用法详解
2021/11/11 Python
SpringBoot详解整合Redis缓存方法
2022/07/15 Java/Android