JavaScript模板入门介绍


Posted in Javascript onSeptember 26, 2012

比如要在一个列表中利用ajax插入一个li的时候,我会直接把数据跟html标签拼接成一句完整的html,然后插入到ul中。无论数据是从服务器端拿回的,或者是从用户的input输入中拿到的——无论哪种方法都是一样。
这个拼接过程放在JavaScript文件中,显得非常不优雅。如果还把style也放在JavaScript中,那数据、结构还有样式整个就是一锅粥了,要维护这样的代码会让人想自杀。最过分的就是把页面上最终要生成的HTML都直接放在服务器端,ajax吐出数据就包含了<li>标签,这样的页面几乎不存在扩展性了,修改一个前台样式都要涉及后台代码的修改。

后来我们知道了不要在JavaScript中对DOM进行style定制,而是只需要在CSS文件中定义好对应的class,然后在JavaScript中使用这个class就好。

接下来我们要做的就是用JavaScript模板把HTML结构(在这个案例中,是<li>标签)也从JavaScript中分离。

市面上的JavaScript模板很多了,以handlebars这个优秀的模板为例吧:

我们在页面的html中定义模板:

<script id="list-template" type="text/x-handlebars-template"> 
<li>{{title}}</li> 
</script>

然后在我们的逻辑JavaScript代码中可以把数据拼接到这一模版中:
var source = $("#list-template").html(); //模板源,一般放在html的script中,这里我们使用jQuery,也可以使用其它方法直接获得内容字符串 
var template = Handlerbars.compile(source); //编译生成一个模板template 
var context = {title:"This is a todo item"} //获得数据,数据一般从ajax或者input中取得 
var html = template(context); //数据+模板=新的html

这就是基本的 用法了,更多逻辑可以参考官方文档:http://handlebarsjs.com/
Javascript 相关文章推荐
HTML颜色选择器实现代码
Nov 23 Javascript
实用的JS正则表达式(手机号码/IP正则/邮编正则/电话等)
Jan 11 Javascript
jquery 检测元素是否存在的实例代码
Nov 19 Javascript
jsp网页搜索结果中实现选中一行使其高亮
Feb 17 Javascript
JavaScript中的alert()函数使用技巧详解
Dec 29 Javascript
Jquery 实现table样式的设定
Jan 28 Javascript
jquery实现未经美化的简洁TAB菜单效果
Aug 28 Javascript
jQuery监听文件上传实现进度条效果的方法
Oct 16 Javascript
JavaScript与JQUERY获取元素的宽、高和位置
Feb 26 Javascript
jQuery实现用户信息表格的添加和删除功能
Sep 12 jQuery
vue使用axios实现文件上传进度的实时更新详解
Dec 20 Javascript
JS数组的常用方法整理
Mar 31 Javascript
JavaScript快速检测浏览器对CSS3特性的支持情况
Sep 26 #Javascript
JavaScript 参数中的数组展开 [译]
Sep 21 #Javascript
JavaScript中将一个值转换为字符串的方法分析[译]
Sep 21 #Javascript
使用apply方法处理数组的三个技巧[译]
Sep 20 #Javascript
js DOM 元素ID就是全局变量
Sep 20 #Javascript
JavaScript NaN和Infinity特殊值 [译]
Sep 20 #Javascript
JavaScript 更严格的相等 [译]
Sep 20 #Javascript
You might like
自动生成文章摘要的代码[PHP 版本]
2007/03/20 PHP
php xml-rpc远程调用
2008/12/19 PHP
PHP中利用substr_replace将指定两位置之间的字符替换为*号
2011/01/27 PHP
解析使用ThinkPHP应该掌握的调试手段
2013/06/20 PHP
PHP实现生成透明背景的PNG缩略图函数分享
2014/07/08 PHP
PHP多个文件上传到服务器实例
2014/10/29 PHP
获取Javscript执行函数名称的方法
2006/12/22 Javascript
驱动事件的addEvent.js代码
2007/03/27 Javascript
JavaScript 关键字屏蔽实现函数
2009/08/02 Javascript
jQuery实战之仿淘宝商城左侧导航效果
2011/04/12 Javascript
jquery 选项卡效果 新手代码
2011/07/08 Javascript
IE8对JS通过属性和数组遍历解析不一样的地方探讨
2013/05/06 Javascript
js 调用百度地图api并在地图上进行打点添加标注
2014/05/13 Javascript
jquery操作select方法汇总
2015/02/05 Javascript
javascript动态创建表格及添加数据实例详解
2015/05/13 Javascript
js随机生成字母数字组合的字符串 随机动画数字
2015/09/02 Javascript
javascript实现密码验证
2015/11/10 Javascript
AngularJS实现Input格式化的方法
2016/11/07 Javascript
js实现首屏延迟加载实现方法 js实现多屏单张图片延迟加载效果
2017/07/17 Javascript
简单谈谈关于Angular Cli打包的事
2017/09/05 Javascript
如何使node也支持从url加载一个module详解
2018/06/05 Javascript
vue检测对象和数组的变化分析
2018/06/30 Javascript
一个Vue视频媒体多段裁剪组件的实现示例
2018/08/09 Javascript
vue通过数据过滤实现表格合并
2020/11/30 Javascript
LayUI动态设置checkbox不显示的解决方法
2019/09/02 Javascript
微信小程序自定义弹出模态框禁止底部滚动功能
2020/03/09 Javascript
python中django框架通过正则搜索页面上email地址的方法
2015/03/21 Python
Python中的各种装饰器详解
2015/04/11 Python
python3中set(集合)的语法总结分享
2017/03/24 Python
python去掉空白行的多种实现代码
2018/03/19 Python
python实现简单的单变量线性回归方法
2018/11/08 Python
用 Django 开发一个 Python Web API的方法步骤
2020/12/03 Python
浅析HTML5 meta viewport参数
2020/10/28 HTML / CSS
初中班主任评语
2014/04/24 职场文书
手机销售员岗位职责
2015/04/11 职场文书
Nginx实现会话保持的两种方式
2022/03/18 Servers