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中odd选择器的定义和用法
Dec 23 Javascript
浅谈JavaScript中的String对象常用方法
Feb 25 Javascript
Javascript中的return作用及javascript return关键字用法详解
Nov 05 Javascript
AngularJS进行性能调优的7个建议
Dec 28 Javascript
jQuery获取访问者IP地址的方法(基于新浪API与QQ查询接口)
May 25 Javascript
jquery实现input框获取焦点的方法
Feb 06 Javascript
vue+axios新手实践实现登陆的示例代码
Jun 06 Javascript
JS中DOM元素的attribute与property属性示例详解
Sep 04 Javascript
Vue源码学习之关于对Array的数据侦听实现
Apr 23 Javascript
Node.js API详解之 Error模块用法实例分析
May 14 Javascript
jQuery+ajax实现文件上传功能
Dec 22 jQuery
vue router 动态路由清除方式
May 25 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读MYSQL中文乱码的解决方法
2006/12/17 PHP
PHP下SSL加密解密、验证、签名方法(很简单)
2020/06/28 PHP
PHP的RSA加密解密方法以及开发接口使用
2018/02/11 PHP
js有序数组的连接问题
2013/10/01 Javascript
Javascript实现真实字符串剩余字数提示的实例代码
2013/10/22 Javascript
JavaScript通过事件代理高亮显示表格行的方法
2015/05/27 Javascript
JavaScript实现基于十进制的四舍五入实例
2015/07/17 Javascript
JS动态插入并立即执行回调函数的方法
2016/04/21 Javascript
深入浅出ES6之let和const命令
2016/08/25 Javascript
jQuery实现的网页换肤效果示例
2016/09/20 Javascript
利用ES6语法重构React组件详解
2017/03/02 Javascript
实现微信小程序的wxml文件和wxss文件在webstrom的支持
2017/06/12 Javascript
Vue-Router2.X多种路由实现方式总结
2018/02/09 Javascript
Vue+Webpack完美整合富文本编辑器TinyMce的方法
2018/11/30 Javascript
nodejs基础之buffer缓冲区用法分析
2018/12/26 NodeJs
javascript this指向相关问题及改变方法
2020/11/19 Javascript
JavaScript实现点击切换验证码及校验
2021/01/10 Javascript
jQuery实现穿梭框效果
2021/01/19 jQuery
Python 开发Activex组件方法
2009/11/08 Python
如何利用python给图片添加半透明水印
2019/09/06 Python
python访问hdfs的操作
2020/06/06 Python
python对一个数向上取整的实例方法
2020/06/18 Python
Django Form设置文本框为readonly操作
2020/07/03 Python
修复iPhone的safari浏览器上submit按钮圆角bug
2012/12/24 HTML / CSS
西班牙汉普顿小姐:购买帆布鞋和太阳镜
2016/10/23 全球购物
TripAdvisor德国:全球领先的旅游网站
2017/12/07 全球购物
法院实习人员自我鉴定
2013/09/26 职场文书
酒店管理专业毕业生推荐信
2013/11/10 职场文书
业务经理岗位职责
2013/11/11 职场文书
运动会稿件200字
2014/02/07 职场文书
cf收人广告词大全
2014/03/14 职场文书
群众路线个人对照检查材料
2014/09/23 职场文书
银行贷款收入证明
2014/10/17 职场文书
2014年卫生监督工作总结
2014/12/09 职场文书
旗帜观后感
2015/06/08 职场文书
职场中的你,辞职信写对了吗?
2019/06/26 职场文书