《锋利的jQuery》(第2版)读书笔记4
第9章 jQuery Mobile
jQuery Mobile是用来填补jQuery在移动设备应用上的缺憾的一个新项目。
它基于jQuery框架并使用HTML5和CSS3这些新的技术,除了能提供很多基础的移动页面元素开发功能外,框架自身还提供了很多可供扩展的API,以便于开发人员在移动应用上使用。
在移动框架方面,除了jQuery Mobile之外,还有很多移动框架可选。
jqMobi是基于jQuery重写的,适用于iOS和Android等移动设备的JavaScript框架,它含有jQuery Mobile的大部分功能,但是jqMobi体积更小,速度更快,兼容性也有所不同。
Sencha Touch是专门为移动设备开发应用的JavaScript框架。它是一个重量级的框架,组件封装较多,在各平台交互表现统一,但入门门槛较高。
Zepto.js是一个专为Mobile WebKit浏览器而开发的一个JavaScript框架,它是超轻量级的,只有5KB。
PhoneGap是一个开源的开发框架,使用HTML、CSS和JavaScript来构建跨平台的移动应用程序。其特性包括:将HTML/JavaScript代码打包成本地App,帮助开发者部署到各种平台上,并提供了访问移动应用本地特性的接口,同时支持多语言混合的插件机制。
第11章 jQuery性能优化和技巧
jQuery性能优化
1、使用最新版本的jQuery类库
不过需要注意的是,在更换新版本之后,不要忘记测试你的代码,毕竟有时候不是完全向后兼容的。
2、使用合适的选择器
尽量使用ID选择器;尽量给选择器指定上下文。
3、缓存对象
不要让相同的选择器在你的代码里出现多次,可以利用缓存变量。
4、循环时的DOM操作
尽可能减少DOM操作,应该将整个元素字符串在插入DOM之前全部创建好。
5、数组方式使用jQuery对象
使用jQuery选择器获取结果是一个jQuery对象。然而,jQuery类库会让你感觉你正在使用一个定义了索引和长度的数组。在性能方面,建议使用简单for或者while循环来处理,而不是$.each(),这样使你的代码更快。
另外注意,检查长度也是一个检查jQuery对象是否存在的方式。
6、事件代理
每一个JavaScript事件都会冒泡到父级节点。当我们需要给多个元素调用同个函数时,我们只需向它们的父节点绑定一次事件,然后通过event.target获取到点击的当前元素。比如,我们要为一个表格绑定这样的行为:点击td后,把背景色设置为红色,代码如下:
$(‘#myTable’).click(function(e) {
var $click = $(e.target); // e.target捕获到触发的目标元素
$click.css(‘background’,’red’);
}
此外,在jQuery.1.7中提供了一个新的方式on(),来帮助你将整个事件监听封装到一个便利方法中,如下所示:
$(‘#myTable’).on(‘click’,’td’,function() {
$(this).css(‘background’,’red’);
}
7、将你的代码转化成jQuery插件
如果你每次都需要花上一定的时间去开发类似的jQuery代码,那么你可以考虑将代码变成插件。
8、使用join()来拼接字符串
使用join()代替“+”来拼接长字符串,它确实有助于优化性能,尤其是长字符串处理的时候。
首先创建一个数组,然后循环,最后使用join()把数组转化为字符串,代码如下:
var array = [];
for(var i-0;i<=10000;i++) {
array[i] = ‘<li>+i+’</li>’;
}
$(‘#list’).html(array.join(‘’));
9、合理利用HTML5的Data属性
HTML5的data属性可以帮助我们插入数据,特别是前后端的数据交换。jQuery的data()方法,有效的利用HTML5的属性,来自动得到数据。
下面是个例子:
<div id=”dl” data-role=”page” data-last-value=”43”
data-options=’{“name”:”John”}’></div>
为了读取数据,你需要使用如下代码:
$(“#dl”).data(“role”); // ”page”
$(“#dl”).data(“lastValue”); // 43
$(“#dl”).data(“options”); // ”John”
10、尽量使用原生的JavaScript方法
经验告诉我们,方法的选择很重要,有时候你也许根本不需要jQuery。
11、压缩JavaScript
现在的Web项目中离不开大量JavaScript,而JS文件的体积越来越大,随之也影响到页面的感知性能。因此,需要对JavaScript文件进行压缩,一方面是使用Gzip;另一方面则是去除JavaScript文件里的注释、空白,并且压缩局部变量长度等。
《锋利的jQuery》(第2版)读书笔记4的更多相关文章
- 锋利的jQuery第2版学习笔记4、5章
第4章,jQuery中的事件和动画 注意:使用的jQuery版本为1.7.1 jQuery中的事件 JavaScript中通常使用window.onload方法,jQuery中使用$(document ...
- 锋利的jQuery第2版学习笔记8~11章
第8章,用jQuery打造个性网站 网站结构 文件结构 images文件夹用于存放将要用到的图片 styles文件夹用于存放CSS样式表,个人更倾向于使用CSS文件夹 scripts文件夹用于存放jQ ...
- 锋利的jQuery第2版学习笔记6、7章
第6章,jQuery与Ajax的应用 Ajax的优势和不足 Ajax的优势 1.不需要插件支持 2.优秀的用户体验 3.提高Web程序的性能 4.减轻服务器和带宽的负担 Ajax的不足 1.浏览器对X ...
- 锋利的jQuery第2版学习笔记1~3章
第1章,认识jQuery 注意:使用的jQuery版本为1.7.1 目前流行的JavaScript库 Prototype(http://www.prototypejs.org),成型早,面向对象的思想 ...
- Linux设备驱动程序 第三版 读书笔记(一)
Linux设备驱动程序 第三版 读书笔记(一) Bob Zhang 2017.08.25 编写基本的Hello World模块 #include <linux/init.h> #inclu ...
- 锋利的jQuery(第二版)学习总结
通过对<锋利的jQuery>(第二版)一书的学习,发现此书讲解通俗易懂,是学习jQuery的一本很好的指导书,特作如下总结. 此书主要讲解了jQuery的常用操作,包括认识jQuery,j ...
- Primer C++第五版 读书笔记(一)
Primer C++第五版 读书笔记(一) (如有侵权请通知本人,将第一时间删文) 1.1-2.2 章节 关于C++变量初始化: 初始化不是赋值,初始化的含义是创建变量时赋予其一个初始值,而赋值的含义 ...
- 单元测试之道Java版——读书笔记
单元测试知道Java版读书笔记 首先我们必须要知道我们所写的代码,它的功能是什么,如果我们不了解代码的行为,那么也就无从测试. 我们测试的目的,是为了我们整个程序架构的稳定,代码其实就是欧文要实现功能 ...
- 《jQuery基础教程》读书笔记
最近在看<jQuery基础教程>这本书,做了点读书笔记以备回顾,不定期更新. 第一章第二章比较基础,就此略过了... 第三章 事件 jQuery中$(document).ready()与j ...
- 锋利的jQuery(第二版) 初读笔记
window.onload(): 必须等待网页中所有的内容加载完毕后(包括图片)才能执行. $(document).ready(): 网页中所有DOM结构绘制完毕后就执行,可能DOM元素关联的东西并没 ...
随机推荐
- 微信小程序--摸索之旅
首先 奉上腾讯官方文档 方便参考:https://mp.weixin.qq.com/debug/wxadoc/design/index.html 个人认为没说啥特别有用的信息(可能是我看的太粗糙了) ...
- Android 自定义表格显示数据
Android 自定义TextView控件,用来组成表格方便数据的展示. 首先看一下效果 样式不是很好看,需要用的可以自己优化一下. 实现方式很简单. 1.自定义控件 MyTableTextView ...
- 通过Nginx+tomcat+redis实现反向代理 、负载均衡及session同步
一直对于负载均衡比较陌生,今天尝试着去了解了一下,并做了一个小的实验,对于这个概念有一些认识,在此做一个简单的总结 什么是负载均衡 负载均衡,英文 名称为Load Balance,指由多台服务器以对称 ...
- 2016-11-02: boost::enable_shared_from_this
使用场景 当类对象被shared_ptr管理时,需要在类自己定义的函数中把当前对象作为参数传递给其他函数时,必须传递一个shared_ptr,否则就不能保持shared_ptr管理这个类对象的语义.因 ...
- Spring整合log4j
log4j2.xml放在类加载路径下,类加载路径就是WEB-INF文件夹下的classses文件,因为运行时,src包里的java类会被编译成.class盘文件,放在WEB-INF文件夹下的class ...
- javaweb 拦截器报错
拦截器报错 The content of element type "interceptor-ref" must match "(param)*".内容元素 ...
- 解决NetBeans编辑器中文乱码问题
在JDK→JRE→lib目录下找到fontconfig.properties.src文件,打开,找到# Component Font Mappings,表示字体映射,可以看到下面列出了几种字体映射集合 ...
- mysql数据引擎的概念介绍
什么是数据库引擎?每种数据库的数据格式,内部实现机制都是不同的,要利用一种开发工具访问一种数据库,就必须通过一种中介程序,这种开发工具与数据库之间的中介程序就叫数据库引擎. 如果你是个赛车手并且按一下 ...
- TortoiseGit 图标不显示
1. 确认注册表:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdent ...
- hibernate 注解 主键生成策略
一.JPA通用策略生成器 通过annotation来映射hibernate实体的,基于annotation的hibernate主键标识为@Id, 其生成规则由@GeneratedValue ...