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 相关文章推荐
Jquery iframe内部出滚动条
Feb 11 Javascript
JavaScript判断窗口是否最小化的代码(跨浏览器)
Aug 01 Javascript
js鼠标点击图片切换效果实现代码
Nov 19 Javascript
Java框架SSH结合Easyui控件实现省市县三级联动示例解析
Jun 12 Javascript
AngularJS国际化详解及示例代码
Aug 18 Javascript
微信小程序 下拉菜单简单实例
Apr 13 Javascript
AngularJS ionic手势事件的使用总结
Aug 09 Javascript
Vue.js框架路由使用方法实例详解
Aug 25 Javascript
微信小程序使用map组件实现获取定位城市天气或者指定城市天气数据功能
Jan 22 Javascript
node.js 微信开发之定时获取access_token
Feb 07 Javascript
jQuery AJAX应用实例总结
May 19 jQuery
Vue组件化(ref,props, mixin,.插件)详解
May 15 Vue.js
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代码(星期六,星期日总和)
2009/11/12 PHP
php读取远程gzip压缩网页的方法
2014/12/29 PHP
PHP贪婪算法解决0-1背包问题实例分析
2015/03/23 PHP
php中switch语句用法详解
2015/08/17 PHP
php获取远程文件内容的函数
2015/11/02 PHP
PHP使用第三方即时获取物流动态实例详解
2017/04/27 PHP
php分页查询mysql结果的base64处理方法示例
2017/05/18 PHP
php解决crontab定时任务不能写入文件问题的方法分析
2019/09/16 PHP
Javascript insertAfter() 实现函数代码
2011/10/12 Javascript
JQuery 操作/获取table具体代码
2013/06/13 Javascript
js常用数组操作方法简明总结
2014/06/20 Javascript
jQuery中slice()方法用法实例
2015/01/07 Javascript
jQuery实现仿QQ在线客服效果的滚动层代码
2015/10/15 Javascript
AngularJS 工作原理详解
2016/08/18 Javascript
javascript this详细介绍
2016/09/19 Javascript
解决vuejs 使用value in list 循环遍历数组出现警告的问题
2018/09/26 Javascript
Vue实现一个无限加载列表功能
2018/11/13 Javascript
JavaScript常见事件对象与操作实例总结
2019/01/05 Javascript
在Vue项目中使用jsencrypt.js对数据进行加密传输的方法
2019/04/17 Javascript
Python实现简易端口扫描器代码实例
2017/03/15 Python
Python3使用PyQt5制作简单的画板/手写板实例
2017/10/19 Python
LRUCache的实现原理及利用python实现的方法
2017/11/21 Python
使用Matplotlib 绘制精美的数学图形例子
2019/12/13 Python
Keds加拿大官网:购买帆布运动鞋和皮鞋
2019/09/26 全球购物
值传递还是引用传递
2015/02/08 面试题
经典优秀毕业生求职信范文分享
2013/12/18 职场文书
酒店人事专员岗位职责
2013/12/19 职场文书
上班离岗检讨书
2014/01/27 职场文书
迎国庆主题班会
2015/08/17 职场文书
中考百日冲刺决心书
2015/09/22 职场文书
创业不要错过,这4种餐饮新模式
2019/07/18 职场文书
三十年再续同学情倡议书
2019/11/27 职场文书
javascript实现计算器功能详解流程
2021/11/01 Javascript
Python 中 Shutil 模块详情
2021/11/11 Python
基于Python实现一个春节倒计时脚本
2022/01/22 Python
Java数组详细介绍及相关工具类
2022/04/14 Java/Android