详解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 相关文章推荐
浏览器图片选择预览、旋转、批量上传的JS代码实现
Dec 04 Javascript
jQuery+jRange实现滑动选取数值范围特效
Mar 14 Javascript
JS实现字符串转日期并比较大小实例分析
Dec 09 Javascript
JavaScript数据结构与算法之链表
Jan 29 Javascript
BootStrap 智能表单实战系列(二)BootStrap支持的类型简介
Jun 13 Javascript
H5手机端多文件上传预览插件
Apr 21 Javascript
JS常用正则表达式总结【经典】
May 12 Javascript
Angular实现类似博客评论的递归显示及获取回复评论的数据
Nov 06 Javascript
Vue组件化开发思考
Feb 02 Javascript
小程序云开发实战小结
Oct 25 Javascript
VUE 实现复制内容到剪贴板的两种方法
Apr 24 Javascript
webpack4 SplitChunks实现代码分隔详解
May 23 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中文字符串截取函数
2013/11/12 PHP
php计算数组不为空元素个数的方法
2014/01/27 PHP
PHP实现文件上传下载实例
2016/10/18 PHP
php的instanceof和判断闭包Closure操作示例
2020/01/26 PHP
你真的了解JavaScript吗?
2007/02/24 Javascript
js实现简单的购物车有图有代码
2014/05/26 Javascript
js绘制圆形和矩形的方法
2015/08/05 Javascript
微信小程序 教程之引用
2016/10/18 Javascript
Bootstrap弹出框(Popover)被挤压的问题小结
2017/07/11 Javascript
vue2.0使用swiper组件实现轮播的示例代码
2018/03/03 Javascript
Node.JS循环删除非空文件夹及子目录下的所有文件
2018/03/12 Javascript
微信小程序自定义tab实现多层tab嵌套功能
2018/06/15 Javascript
vue 父组件给子组件传值子组件给父组件传值的实例代码
2019/04/15 Javascript
vue-froala-wysiwyg 富文本编辑器功能
2019/09/19 Javascript
[57:22]2018DOTA2亚洲邀请赛 4.7总决赛 LGD vs Mineski 第五场
2018/04/10 DOTA
python模块简介之有序字典(OrderedDict)
2016/12/01 Python
浅析PHP与Python进行数据交互
2018/05/15 Python
python取数作为临时极大值(极小值)的方法
2018/10/15 Python
详解Python3之数据指纹MD5校验与对比
2019/06/11 Python
django2.2 和 PyMySQL版本兼容问题
2020/02/17 Python
CSS3制作缩略图的详细过程
2016/07/08 HTML / CSS
GUESS西班牙官方网上商城:美国服饰品牌
2017/03/15 全球购物
百度JavaScript笔试题
2015/01/15 面试题
Unix里面如何在后台运行程序
2016/10/14 面试题
应届护士推荐信
2013/11/16 职场文书
大学毕业生通用自我评价
2014/01/05 职场文书
旷课检讨书3000字
2014/02/04 职场文书
维修工先进事迹
2014/05/29 职场文书
小学教师暑期培训方案
2014/08/28 职场文书
2014年外联部工作总结
2014/11/17 职场文书
2015年班级元旦晚会活动总结
2014/11/28 职场文书
2015年行风建设工作总结
2015/05/15 职场文书
2015年领导班子工作总结
2015/05/23 职场文书
秋季运动会加油词
2015/07/18 职场文书
只用40行Python代码就能写出pdf转word小工具
2021/05/31 Python
使用Nginx的访问日志统计PV与UV
2022/05/06 Servers