读Javascript高性能编程重点笔记


Posted in Javascript onDecember 21, 2016

第一点

//高效简洁                     //低消能
children




        //childNodes
childElementCount            //childNodes.length
firstElementChild              //firstChild
lastEelmentChild              //lastChild
nextElementSibling           //nextSibling
previousElementSibling       //previousSibling

第二点:选择器的高效应用

<div id="footer_bottom">
<a href="/AboutUS.aspx">三水点靠木</a><a href="/ContactUs.aspx">联系我们</a><a href="/about/ad.aspx">广告服务</a><a href="/about/job.aspx">人才服务</a>©2006-2016 <a href="https://3water.com/">三水点靠木</a>
</div>
var aArr1= document.querySelectorAll("#footer_bottom a");//简洁高效
var aArr2 = docuement.getElementById("footer_bottom").getElementsByTagName("a");//繁杂低效

//return 
<a href="/AboutUS.aspx">三水点靠木</a>,
<a href="/ContactUs.aspx">联系我们</a>,
<a href="/about/ad.aspx">广告服务</a>,
<a href="/about/job.aspx">人才服务</a>,

//选择第一个子节点
var a = document.querySelector("#footer_bottom a");
//return <a href="/AboutUS.aspx">三水点靠木</a>

//选择多个节点
var divs = document.querySelectorAll("div.footer,div.main,div.header");

注意:大部分浏览器都支持上述属性,IE6,7,8仅支持children属性

减少DOM的重新渲染与排版(三种方式)

1.先将要处理的元素隐藏,然后对其处理,最后显示

2.创建文件片段的方式(推荐) document.createDocumentFragment();

3.对要处理的元素克隆一个副本,然后对副本操作,最后将副本替换原本

下面是三水点靠木小编的补充

将循环的对象存储

使用前:

var str = "nanananana";
for (var n = 0; n < str.length; n++) {}

使用后:

 var str = "nanananana",
strLgth = str.length;
for (var n = 0; n < strLgth ; n++) {}

循环对性能的消耗是很大的,将循环的对象存储,减少每次循环都要进行对象的计算。

最小化减少回流和重绘

使用前:

var coored = document.getElementById("ctgHotelTab");
document.getElementById("ctgHotelTab").style.top = coored.offsetTop + 35 + "px";

使用后:

var coored = document.getElementById("ctgHotelTab"),
offetTop = coored.offsetTop + 35;
document.getElementById("ctgHotelTab").style.top = offetTop + "px";
Javascript 相关文章推荐
用jQuery中的ajax分页实现代码
Sep 20 Javascript
jQuery源码分析-03构造jQuery对象-源码结构和核心函数
Nov 14 Javascript
jQuery弹出(alert)select选择的值
Apr 21 Javascript
浅析jQuery中调用ajax方法时在不同浏览器中遇到的问题
Jun 11 Javascript
微信小程序 实战实例开发流程详细介绍
Jan 05 Javascript
Angular2.js实现表单验证详解
Jun 23 Javascript
简单谈谈关于Angular Cli打包的事
Sep 05 Javascript
详细分析jsonp的原理和实现方式
Nov 20 Javascript
Angular实现的日程表功能【可添加及隐藏显示内容】
Dec 27 Javascript
在vscode里使用.vue代码模板的方法
Apr 28 Javascript
使用Vue实现调用接口加载页面初始数据
Oct 28 Javascript
jQuery 选择器用法实例分析【prev + next】
May 22 jQuery
解决拦截器对ajax请求的拦截实例详解
Dec 21 #Javascript
原生的强大DOM选择器querySelector介绍
Dec 21 #Javascript
懒加载实现的分页&amp;&amp;网站footer自适应
Dec 21 #Javascript
JS树形菜单组件Bootstrap TreeView使用方法详解
Dec 21 #Javascript
Vue.js 递归组件实现树形菜单(实例分享)
Dec 21 #Javascript
详解jQuery选择器
Dec 21 #Javascript
如何清除IE10+ input X 文本框的叉叉和密码输入框的眼睛图标
Dec 21 #Javascript
You might like
浅谈ThinkPHP的URL重写
2014/11/25 PHP
WordPress网站性能优化指南
2015/11/18 PHP
PHP实现的敏感词过滤方法示例
2019/03/06 PHP
JQuery事件e参数的方法preventDefault()取消默认行为
2013/09/26 Javascript
javascript实现百度地图鼠标滑动事件显示、隐藏
2015/04/02 Javascript
跟我学习javascript的Date对象
2015/11/19 Javascript
Vue.js每天必学之方法与事件处理器
2016/09/06 Javascript
jQuery.uploadify文件上传组件实例讲解
2016/09/23 Javascript
Jquery表单验证失败后不提交的解决方法
2016/10/18 Javascript
jQuery+json实现动态创建复杂表格table的方法
2016/10/25 Javascript
Node Puppeteer图像识别实现百度指数爬虫的示例
2018/02/22 Javascript
Vue 项目中遇到的跨域问题及解决方法(后台php)
2018/03/28 Javascript
Vue 组件参数校验与非props特性的方法
2019/02/12 Javascript
150行Node.js实现的dns代理工具
2019/08/02 Javascript
Vue this.$router.push(参数)实现页面跳转操作
2020/09/09 Javascript
[46:55]完美世界DOTA2联赛决赛 FTD vs Phoenix 第三场 11.08
2020/11/11 DOTA
python 中文乱码问题深入分析
2011/03/13 Python
Python抓取Discuz!用户名脚本代码
2013/12/30 Python
python操作excel的方法
2018/08/16 Python
Python日期时间模块datetime详解与Python 日期时间的比较,计算实例代码
2018/09/14 Python
Python根据欧拉角求旋转矩阵的实例
2019/01/28 Python
使用Python制作表情包实现换脸功能
2019/07/19 Python
Flask框架学习笔记之模板操作实例详解
2019/08/15 Python
使用pandas的box_plot去除异常值
2019/12/10 Python
如何利用input事件来监听移动端的输入
2016/04/15 HTML / CSS
Allen Edmonds官方网站:一家美国优质男士鞋类及配饰制造商
2019/03/12 全球购物
电大毕业生自我鉴定
2013/11/10 职场文书
关于工资低的辞职信
2014/01/14 职场文书
幼儿园五一活动方案
2014/02/07 职场文书
一年级小学生评语
2014/04/22 职场文书
实习生评语
2014/04/26 职场文书
社区春季防火方案
2014/06/02 职场文书
大学生见习总结报告
2015/06/24 职场文书
工作自我评价范文
2019/03/21 职场文书
python可视化大屏库big_screen示例详解
2021/11/23 Python
Mysql超详细讲解死锁问题的理解
2022/04/01 MySQL