JQuery性能优化的几点建议


Posted in Javascript onMay 14, 2014

针对jquery性能优化这个主题,想必大家都有所了解。下面是我搜集点一点资料关于jquery性能优化,大家可以参考参考。

一、选择器性能优化建议

 1. 总是从#id选择器来继承:这是jQuery选择器的一条黄金法则。jQuery选择一个元素最快的方法就是用ID来选择了;

 2. 在class前面使用tag:jQuery中第二快的选择器就是tag选择器(如$(‘head')),因为它和直接来自于原生的Javascript方法getElementByTagName()。所以最好总是用tag来修饰class(并且不要忘了就近的ID);

 3. 使用子查询:将父对象缓存起来以备将来的使用;

 4. 采用find(),而不使用上下文查找;

 5. 利用强大的链式操作:采用jQuery的链式操作比缓存选择器更有效;

二、优化DOM操作建议

 1.缓存jQuery对象: 将你经常用的元素缓存起来;

 2. 当要进行DOM插入时,将所有元素封装成一个元素:

这里的基本思想是在内存中建立你确实想要的东西,然后更新DOM。这并不是一个jQuery最佳实践,但必须进行有效的JavaScript操作 。直接的DOM操作速度很慢

直接的DOM操作很慢。尽可能少的去更改HTML结构。

 3.使用直接函数,而不要使用与与之等同的函数:为了获得更好的性能,你应该使用直接函数如$.ajax(),而不要使用$.get(),$.getJSON(),$.post(),因为后面的几个将会调用$.ajax()。

 4. 缓存jQuery结果,以备后来使用:

你经常会获得一个javasript应用对象——你可以用App.来保存你经常选择的对象,以备将来使用;

三、关于优化事件性能的建议

 1.推迟到$(window).load:

有时候采用$(window).load()比$(document).ready()更快,因为后者不等所有的DOM元素都下载完之前执行。你应该在使用它之前测试它。

 2.使用Event Delegation:

当你在一个容器中有许多节点,你想对所有的节点都绑定一个事件,delegation很适合这样的应用场景。使用Delegation,我们仅需要在父级绑定事件,然后查看哪个子节点(目标节点)触发了事件。当你有一个很多数据的table的时候,你想对td节点设置事件,这就变得很方便。先获得 table,然后为所有的td节点设置delegation事件

四、其他常用jQuery性能优化建议

1. 使用最新版本的jQuery

最新的版本往往是最好的。更换了版本后,不要忘记测试你的代码。有时候也不是完全向后兼容的。

2. 使用HMTL5

新的HTML5标准带来的是更轻巧的DOM结构。更轻巧的结构意味着使用jQuery需要更少的遍历,以及更优良的载入性能。所以如果可能的话请使用HTML5。

3. 如果给15个以上的元素加样式时,直接给DOM元素添加style标签

要给少数的元素加样式,最好的方法就是使用jQuey的css()函数。然而更15个以上的较多的元素添加样式时,直接给DOM添加style 标签更有效些。这个方法可以避免在代码中使用硬编码(hard code)。

    4. 避免载入多余的代码

将Javascript代码放在不同的文件中是个好的方法,仅在需要的时候载入它们。这样你不会载入不必要的代码和选择器。也便于管理代码。

5. 压缩成一个主JS文件,将下载次数保持到最少

当你已经确定了哪些文件是应该被载入的,那么将它们打包成一个文件。用一些开源的工具可以自动帮你完成,如使用Minify(和你的后端代码集成)或者使用JSCompressor,YUI Compressor 或 Dean Edwards JS packer等在线工具可以为你压缩文件。我最喜欢的是JSCompressor。

6. 需要的时候使用原生的Javasript

使用jQuery是个很棒的事情,但是不要忘了它也是Javascript的一个框架。所以你可以在jQuery代码有必要的时候也使用原生的Javascript函数,这样能获得更好的性能。

7. 从Google载入jQuery框架

当你的应用正式上线的时候,请从Google CDN载入jQuery,因为用户可以从最近的地方获取代码。这样你可以减少服务器请求,而用户如果浏览其他网站,而它也使用Google CDN的jQuery时,浏览器就会立即从缓存中调出jQuery代码。

Javascript 相关文章推荐
jquery使用ColorBox弹出图片组浏览层实例演示
Mar 14 Javascript
使用jQuery实现的掷色子游戏动画效果
Mar 14 Javascript
Bootstrap实现登录校验表单(带验证码)
Jun 23 Javascript
全面了解addEventListener和on的区别
Jul 14 Javascript
JS代码实现百度地图 画圆 删除标注
Oct 12 Javascript
js模糊查询实例分享
Dec 26 Javascript
激动人心的 Angular HttpClient的源码解析
Jul 10 Javascript
对vue事件的延迟执行实例讲解
Aug 28 Javascript
JS中的算法与数据结构之队列(Queue)实例详解
Aug 20 Javascript
vue项目中定义全局变量、函数的几种方法
Nov 08 Javascript
使用Webpack 搭建 Vue3 开发环境过程详解
Jul 28 Javascript
VueCli生产环境打包部署跨域失败的解决
Nov 13 Javascript
js 通过html()及text()方法获取并设置p标签的显示值
May 14 #Javascript
JQuery教学之性能优化
May 14 #Javascript
鼠标左键单击冲突的问题解决方法(防止冒泡)
May 14 #Javascript
javascript 中that的含义示例介绍
May 14 #Javascript
table insertRow、deleteRow定义和用法总结
May 14 #Javascript
jQuery 中国省市两级联动选择附图
May 14 #Javascript
全面兼容的javascript时间格式化函数(比较实用)
May 14 #Javascript
You might like
亚洲咖啡有什么?亚洲咖啡产地介绍 亚洲咖啡有什么特点?
2021/03/05 新手入门
无法载入 mcrypt 扩展,请检查 PHP 配置终极解决方案
2011/07/18 PHP
php超快高效率统计大文件行数
2015/07/05 PHP
PHP框架自动加载类文件原理详解
2017/06/06 PHP
PHP的PDO错误与错误处理
2019/01/27 PHP
解决火狐浏览器下JS setTimeout函数不兼容失效不执行的方法
2012/11/14 Javascript
JS自定义功能函数实现动态添加网址参数修改网址参数值
2013/08/02 Javascript
JavaScript数组各种常见用法实例分析
2015/08/04 Javascript
js鼠标点击图片切换效果代码分享
2015/08/26 Javascript
JavaScript学习笔记之取数组中最大值和最小值
2016/03/23 Javascript
Bootstrap实现下拉菜单效果
2016/04/29 Javascript
AngularJS基础 ng-model 指令详解及示例代码
2016/08/02 Javascript
微信小程序 欢迎界面开发的实例详解
2016/11/30 Javascript
前端开发之CSS原理详解
2017/03/11 Javascript
Jquery中attr与prop的区别详解
2017/05/27 jQuery
详解微信小程序设置底部导航栏目方法
2017/06/29 Javascript
vue代理和跨域问题的解决
2018/07/18 Javascript
基于axios 解决跨域cookie丢失的问题
2018/09/26 Javascript
基于layui的table插件进行复选框联动功能的实现方法
2019/09/19 Javascript
Vue搭建后台系统需要注意的问题
2019/11/08 Javascript
一篇文章带你使用Typescript封装一个Vue组件(简单易懂)
2020/06/05 Javascript
JS highcharts动态柱状图原理及实现
2020/10/16 Javascript
[01:08:10]2014 DOTA2国际邀请赛中国区预选赛 SPD-GAMING VS LGD-CDEC
2014/05/22 DOTA
浅谈python numpy中nonzero()的用法
2018/04/02 Python
python excel使用xlutils类库实现追加写功能的方法
2018/05/02 Python
使用python3批量下载rbsp数据的示例代码
2019/12/20 Python
Pytorch 实现冻结指定卷积层的参数
2020/01/06 Python
html table呈现个人简历以及单元格宽度失效的问题解决
2021/01/22 HTML / CSS
巧克力领导品牌瑞士莲美国官网:Lindt Chocolate美国
2016/08/25 全球购物
日本最大的旅游网站:Rakuten Travel(乐天旅游)
2018/08/02 全球购物
高级人员简历的自我评价分享
2013/11/03 职场文书
技术学校毕业生求职信分享
2013/12/02 职场文书
护士旷工检讨书
2015/08/15 职场文书
读《方与圆》有感:交友方圆有度
2020/01/14 职场文书
React Native项目框架搭建的一些心得体会
2021/05/28 Javascript
GTX1650super好不好 gtx1650super显卡属于什么级别
2022/04/08 数码科技