详解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函数
Jul 21 Javascript
jquery左边浮动到一定位置时显示返回顶部按钮
Jun 05 Javascript
javascript中使用正则表达式清理table样式的代码
Apr 01 Javascript
jQuery如何使用自动触发事件trigger
Nov 29 Javascript
探讨JavaScript语句的执行过程
Jan 28 Javascript
谷歌showModalDialog()方法不兼容出现对话窗口的解决办法
Feb 15 Javascript
用纯Node.JS弹出Windows系统消息提示框实例(MessageBox)
May 17 Javascript
VUE axios发送跨域请求需要注意的问题
Jul 06 Javascript
BootStrap导航栏问题记录
Jul 31 Javascript
JavaScript for循环 if判断语句(学习笔记)
Oct 11 Javascript
vue使用一些外部插件及样式的配置代码
Nov 18 Javascript
详解vue beforeEach 死循环问题解决方法
Feb 25 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
快速配置PHPMyAdmin方法
2008/06/05 PHP
php字符串函数学习之strstr()
2015/03/27 PHP
php中Ioc(控制反转)和Di(依赖注入)
2017/05/07 PHP
Laravel中如何增加自定义全局函数详解
2017/05/09 PHP
浅谈laravel5.5 belongsToMany自身的正确用法
2019/10/17 PHP
PHP sdk实现在线打包代码示例
2020/12/09 PHP
关于用Jquery的height()、width()计算动态插入的IMG标签的宽高的问题
2010/12/08 Javascript
jQuery怎么解析Json字符串(Json格式/Json对象)
2013/08/09 Javascript
JavaScript sup方法入门实例(把字符串显示为上标)
2014/10/20 Javascript
Javascript学习指南
2014/12/01 Javascript
javascript+html5实现仿flash滚动播放图片的方法
2015/04/27 Javascript
浅谈window对象的scrollBy()方法
2015/07/15 Javascript
JavaScript实现下拉列表框数据增加、删除、上下排序的方法
2015/08/11 Javascript
详解JS中的柯里化(currying)
2017/08/17 Javascript
React-Router如何进行页面权限管理的方法
2017/12/06 Javascript
Angular使用cli生成自定义文件、组件的方法
2018/09/04 Javascript
JavaScript如何把两个数组对象合并过程解析
2019/10/10 Javascript
Python中多线程及程序锁浅析
2015/01/21 Python
利用python发送和接收邮件
2016/09/27 Python
Python3实现抓取javascript动态生成的html网页功能示例
2017/08/22 Python
Python中常用信号signal类型实例
2018/01/25 Python
解决pandas无法在pycharm中使用plot()方法显示图像的问题
2018/05/24 Python
利用pandas将numpy数组导出生成excel的实例
2018/06/14 Python
Python实现的txt文件去重功能示例
2018/07/07 Python
python获取地震信息 微信实时推送
2019/06/18 Python
pymysql 开启调试模式的实现
2019/09/24 Python
C#可否对内存进行直接的操作
2015/02/26 面试题
介绍一下JNDI的基本概念
2013/07/26 面试题
法律专业应届本科毕业生求职信
2013/10/25 职场文书
八年级英语教学反思
2014/01/09 职场文书
运动会广播稿150字
2014/02/19 职场文书
质量承诺书格式
2014/05/20 职场文书
空气的环保标语
2014/06/12 职场文书
致百米运动员广播稿5篇
2014/10/13 职场文书
军训决心书范文
2015/09/22 职场文书
MySQL运行报错:“Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre”解决方法
2022/06/14 MySQL