详解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 调整select 位置的函数
Feb 21 Javascript
Extjs TimeField 显示正常时间格式的代码
Jun 28 Javascript
jquery formValidator插件ajax验证 内容不做任何修改再离开提示错误的bug解决方法
Jan 04 Javascript
Jquery each方法跳出循环,并获取返回值(实例讲解)
Dec 12 Javascript
在JavaScript中用getMinutes()方法返回指定的分时刻
Jun 10 Javascript
js学习阶段总结(必看篇)
Jun 16 Javascript
ajax的分页查询示例(不刷新页面)
Jan 11 Javascript
为你的微信小程序体积瘦身详解
May 20 Javascript
jQuery实现点击图标div循环放大缩小功能
Sep 30 jQuery
vue实现移动端悬浮窗效果
Dec 01 Javascript
element中的$confirm的使用
Apr 26 Javascript
Node.JS如何实现JWT原理
Sep 18 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
回首过去10年中最搞笑的10部动漫,哪一部让你节操尽碎?
2020/03/03 日漫
Windows下IIS6/Apache2.2.4+MySQL5.2+PHP5.2.1安装配置方法
2007/05/03 PHP
PH P5.2至5.5、5.6的新增功能详解
2014/07/14 PHP
smarty高级特性之对象的使用方法
2015/12/25 PHP
php文件上传 你真的掌握了吗
2016/11/28 PHP
javascript 设置某DIV区域内的checkbox复选框
2009/11/30 Javascript
js实现的日期操作类DateTime函数代码
2010/03/16 Javascript
JavaScript调用Activex控件的事件的实现方法
2010/04/11 Javascript
jqGrid随窗口大小变化自适应大小的示例代码
2013/12/28 Javascript
JQuery实现动态适时改变字体颜色的方法
2015/03/10 Javascript
jquery中ajax跨域方法实例分析
2015/12/18 Javascript
12个非常实用的JavaScript小技巧【推荐】
2016/05/18 Javascript
JS判断字符串变量是否含有某个字串的实现方法
2016/06/03 Javascript
基于JS模仿windows文件按名称排序效果
2016/06/29 Javascript
JS实现的添加弹出层并完成锁屏操作示例
2017/04/07 Javascript
React-Native 组件之 Modal的使用详解
2017/08/08 Javascript
get  post jsonp三种数据交互形式实例详解
2017/08/25 Javascript
jQuery 改变P标签文本值方法
2018/02/24 jQuery
基于React+Redux的SSR实现方法
2018/07/03 Javascript
vue router 通过路由来实现切换头部标题功能
2019/04/24 Javascript
layui radio单选限制下一个radio单选的实例
2019/09/03 Javascript
vue动态渲染svg、添加点击事件的实现
2020/03/13 Javascript
vue使用axios实现excel文件下载的功能
2020/07/16 Javascript
[02:33]DOTA2英雄基础教程 司夜刺客
2013/12/04 DOTA
Python编程中的反模式实例分析
2014/12/08 Python
在Django的URLconf中使用多个视图前缀的方法
2015/07/18 Python
python使用代理ip访问网站的实例
2018/05/07 Python
pycharm中成功运行图片的配置教程
2018/10/28 Python
Django框架文件上传与自定义图片上传路径、上传文件名操作分析
2019/05/10 Python
H5 meta小结(前端必看篇)
2016/08/24 HTML / CSS
Herschel Supply Co.美国:背包、手提袋及配件
2020/11/24 全球购物
水果超市创业计划书
2014/01/27 职场文书
2014年全国法制宣传日宣传活动方案
2014/11/02 职场文书
同事打架检讨书
2015/05/06 职场文书
Redis模仿手机验证码发送的实现示例
2021/11/02 Redis
Redis实现短信验证码登录的示例代码
2022/06/14 Redis