第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的更多相关文章

  1. 锋利的jQuery第2版学习笔记4、5章

    第4章,jQuery中的事件和动画 注意:使用的jQuery版本为1.7.1 jQuery中的事件 JavaScript中通常使用window.onload方法,jQuery中使用$(document ...

  2. 锋利的jQuery第2版学习笔记8~11章

    第8章,用jQuery打造个性网站 网站结构 文件结构 images文件夹用于存放将要用到的图片 styles文件夹用于存放CSS样式表,个人更倾向于使用CSS文件夹 scripts文件夹用于存放jQ ...

  3. 锋利的jQuery第2版学习笔记6、7章

    第6章,jQuery与Ajax的应用 Ajax的优势和不足 Ajax的优势 1.不需要插件支持 2.优秀的用户体验 3.提高Web程序的性能 4.减轻服务器和带宽的负担 Ajax的不足 1.浏览器对X ...

  4. 锋利的jQuery第2版学习笔记1~3章

    第1章,认识jQuery 注意:使用的jQuery版本为1.7.1 目前流行的JavaScript库 Prototype(http://www.prototypejs.org),成型早,面向对象的思想 ...

  5. Linux设备驱动程序 第三版 读书笔记(一)

    Linux设备驱动程序 第三版 读书笔记(一) Bob Zhang 2017.08.25 编写基本的Hello World模块 #include <linux/init.h> #inclu ...

  6. 锋利的jQuery(第二版)学习总结

    通过对<锋利的jQuery>(第二版)一书的学习,发现此书讲解通俗易懂,是学习jQuery的一本很好的指导书,特作如下总结. 此书主要讲解了jQuery的常用操作,包括认识jQuery,j ...

  7. Primer C++第五版 读书笔记(一)

    Primer C++第五版 读书笔记(一) (如有侵权请通知本人,将第一时间删文) 1.1-2.2 章节 关于C++变量初始化: 初始化不是赋值,初始化的含义是创建变量时赋予其一个初始值,而赋值的含义 ...

  8. 单元测试之道Java版——读书笔记

    单元测试知道Java版读书笔记 首先我们必须要知道我们所写的代码,它的功能是什么,如果我们不了解代码的行为,那么也就无从测试. 我们测试的目的,是为了我们整个程序架构的稳定,代码其实就是欧文要实现功能 ...

  9. 《jQuery基础教程》读书笔记

    最近在看<jQuery基础教程>这本书,做了点读书笔记以备回顾,不定期更新. 第一章第二章比较基础,就此略过了... 第三章 事件 jQuery中$(document).ready()与j ...

  10. 锋利的jQuery(第二版) 初读笔记

    window.onload(): 必须等待网页中所有的内容加载完毕后(包括图片)才能执行. $(document).ready(): 网页中所有DOM结构绘制完毕后就执行,可能DOM元素关联的东西并没 ...

随机推荐

  1. appium移动端测试之滑动(二)

    在ios测试中,需要用到滑动,所以用java封装了一套滑动的方法,不多说,贴代码 /** * 上滑1/4屏幕 */ public void slideUP1_4() { int x = driver. ...

  2. guava – Optional

    过多的使用null可能会导致大量的bugs,Google code 底层代码中,95%的集合类默认不接受null值.对null值,使用快速失败拒绝null比默认接受更好. 另外,null本身的含义很模 ...

  3. IntelliJ IDEA 中文乱码问题解决办法

    自己最近在使用IntelliJ IDEA,发现总是出现中文乱码的问题,在网上找了很多教程,发现真是“天下文章一大抄”.还不如自己动手试着解决一下. 1.编辑器以及调试信息中文乱码问题 解决方案: 选择 ...

  4. 如何使用THashedStringList

    1.添加 uses system.IniFiles 2.实例代码: unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System ...

  5. bashrc

    # ~/.bashrc: executed by bash(1) for non-login shells.# see /usr/share/doc/bash/examples/startup-fil ...

  6. Nginx配置location总结及rewrite规则写法

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 32.0px "Helvetica Neue"; color: #323333 } p. ...

  7. HTTP 错误500.19 -Internal Server Error 错误代码 0x80070021

    转自:http://blog.csdn.net/goux_s/article/details/5676689 错误摘要 HTTP 错误500.19 -Internal Server Error 无法访 ...

  8. 学习一下mef

    微软 http://msdn.microsoft.com/zh-cn/magazine/ee291628.aspx mef http://biancheng.dnbcw.info/net/370552 ...

  9. Parse the main function arguments

    int main(int argc, char **argv) { std::string reportDir; std::string transURL; std::string visualEle ...

  10. 有关Asp.net 中数据请求的处理的新认知:利用httpHandlers

    转自csdn:HttpHandler    HttpHandler是HTTP请求的处理中心,真正地对客户端请求的服务器页面做出编译和执行,并将处理过后的信息附加在HTTP请求信息流中再次返回到Http ...