详解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 相关文章推荐
Save a File Using a File Save Dialog Box
Jun 18 Javascript
jQuery页面图片伴随滚动条逐渐显示的小例子
Mar 21 Javascript
『JavaScript』限制Input只能输入数字实现思路及代码
Apr 22 Javascript
ashx文件获取$.ajax()方法发送的数据
May 26 Javascript
获取JS中网页各种高宽与位置的方法总结
Jul 27 Javascript
JavaScript实现类似拉勾网的鼠标移入移出效果
Oct 27 Javascript
Node.js的Mongodb使用实例
Dec 30 Javascript
Node.js如何响应Ajax的POST请求并且保存为JSON文件详解
Mar 10 Javascript
详解如何使用webpack+es6开发angular1.x
Aug 16 Javascript
如何抽象一个Vue公共组件
Oct 17 Javascript
vue组件实现弹出框点击显示隐藏效果
Oct 26 Javascript
使用Vue中 v-for循环列表控制按钮隐藏显示功能
Apr 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生成随机密码
2015/10/30 PHP
PHP匿名函数和use子句用法实例
2016/03/16 PHP
实例讲解php实现多线程
2019/01/27 PHP
PHP下载文件函数与用法示例
2019/09/27 PHP
JQuery Easyui Tree的oncheck事件实现代码
2010/05/28 Javascript
Javascript面象对象成员、共享成员变量实验
2010/11/19 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(三)情景对话中仿打字机输出文字
2013/01/23 Javascript
JavaScript中的typeof操作符用法实例
2014/04/05 Javascript
jQuery中:gt选择器用法实例
2014/12/29 Javascript
Javascript访问器属性实例分析
2014/12/30 Javascript
JavaScript中的DSL元编程介绍
2015/03/15 Javascript
JavaScript的Number对象的toString()方法
2015/12/18 Javascript
js时间戳转为日期格式的方法
2015/12/28 Javascript
Javascript中的 “&amp;” 和 “|” 详解
2017/02/02 Javascript
js放到head中失效的原因与解决方法
2017/03/07 Javascript
React SSR样式及SEO的实践
2018/10/22 Javascript
python编程使用selenium模拟登陆淘宝实例代码
2018/01/25 Python
Python爬虫使用脚本登录Github并查看信息
2018/07/16 Python
使用python模拟命令行终端的示例
2019/08/13 Python
Python进程,多进程,获取进程id,给子进程传递参数操作示例
2019/10/11 Python
python安装gdal的两种方法
2019/10/29 Python
python实现图片插入文字
2019/11/26 Python
解决安装pyqt5之后无法打开spyder的问题
2019/12/13 Python
详解pycharm连接不上mysql数据库的解决办法
2020/01/10 Python
对python中 math模块下 atan 和 atan2的区别详解
2020/01/17 Python
如何打包Python Web项目实现免安装一键启动的方法
2020/05/21 Python
html5移动端自适应布局的实现
2020/04/15 HTML / CSS
俄罗斯韩国化妆品网上商店:Cosmasi.ru
2019/10/31 全球购物
土耳其新趋势女装购物网站:Addax
2020/01/07 全球购物
亚马逊意大利站点:Amazon.it
2020/12/31 全球购物
2014年科技工作总结
2014/11/26 职场文书
接待员岗位职责范本
2015/04/15 职场文书
葬礼主持词
2015/07/02 职场文书
2016年5月份红领巾广播稿
2015/12/21 职场文书
Go 自定义package包设置与导入操作
2021/05/06 Golang
win10音频服务未响应怎么解决?win10音频服务未响应未修复的解决方法
2022/08/14 数码科技