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菜单
Feb 01 Javascript
jquery $.ajax各个事件执行顺序
Oct 15 Javascript
js简单实现删除记录时的提示效果
Dec 05 Javascript
JavaScript字符串对象fromCharCode方法入门实例(用于把Unicode值转换为字符串)
Oct 17 Javascript
javascript实现图片跟随鼠标移动效果的方法
May 13 Javascript
jQuery实现从身份证号中获取出生日期和性别的方法分析
Feb 25 Javascript
JS中的三个循环小结
Jun 20 Javascript
浅谈pc端rem字体设置的问题
Aug 03 Javascript
微信小程序自定义弹窗wcPop插件
Nov 19 Javascript
解决vue组件props传值对象获取不到的问题
Jun 06 Javascript
JavaScript Dom 绑定事件操作实例详解
Oct 02 Javascript
Vue 修改网站图标的方法
Dec 31 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
ThinkPHP3.0略缩图不能保存到子目录的解决方法
2012/09/30 PHP
php mysql操作mysql_connect连接数据库实例详解
2016/12/26 PHP
PHP框架laravel的.env文件配置教程
2017/06/07 PHP
基于JQuery的一句话搞定手风琴菜单
2012/09/14 Javascript
javascript函数重载解决方案分享
2014/02/19 Javascript
js中的for如何实现foreach中的遍历
2014/05/31 Javascript
JavaScript中用getDate()方法返回指定日期的教程
2015/06/09 Javascript
JavaScript中的setMilliseconds()方法使用详解
2015/06/11 Javascript
window.location.reload 刷新使用分析(去对话框)
2015/11/11 Javascript
js判断当前页面用什么浏览器打开的方法
2016/01/06 Javascript
jQuery移动端图片上传组件
2016/06/12 Javascript
angular+ionic 的app上拉加载更新数据实现方法
2017/01/16 Javascript
Bootstrap笔记—折叠实例代码
2017/03/13 Javascript
Bootstrap如何激活导航状态
2017/03/22 Javascript
vue.js国际化 vue-i18n插件的使用详解
2017/07/07 Javascript
Angular js 实现添加用户、修改密码、敏感字、下拉菜单的综合操作方法
2017/10/24 Javascript
微信小程序block的使用教程
2018/04/01 Javascript
jQuery.extend 与 jQuery.fn.extend的用法及区别实例分析
2018/07/25 jQuery
es6数组includes()用法实例分析
2020/04/18 Javascript
JS将指定的某个字符全部转换为其他字符实例代码
2020/10/13 Javascript
[49:42]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#2Secret VS EG第一局
2016/03/04 DOTA
Python中利用Scipy包的SIFT方法进行图片识别的实例教程
2016/06/03 Python
Python异常的检测和处理方法
2018/10/26 Python
python 利用for循环 保存多个图像或者文件的实例
2018/11/09 Python
Python利用matplotlib做图中图及次坐标轴的实例
2019/07/08 Python
Python中print函数简单使用总结
2019/08/05 Python
python智联招聘爬虫并导入到excel代码实例
2019/09/09 Python
使用python实现数组、链表、队列、栈的方法
2019/12/20 Python
selenium中get_cookies()和add_cookie()的用法详解
2020/01/06 Python
python 获取字典特定值对应的键的实现
2020/09/29 Python
弄清Pytorch显存的分配机制
2020/12/10 Python
联想台湾官网:Lenovo TW
2018/05/09 全球购物
函数指针的定义是什么
2016/08/14 面试题
群众路线批评与自我批评
2014/02/06 职场文书
医学检验专业自荐信
2014/09/18 职场文书
公务员考察材料
2014/12/23 职场文书