读《高性能javascript》笔记(一)
第一章
加载与执行:
1,js脚本会阻塞页面渲染,<script>尽可能放到<body>标签的底部
2, 合并脚本,页面中的<script>标签越少;HTTP请求带来的额外开销方面,减少页面外链脚本文件的数量将会改善性能
3,css文件是并行下载,不会阻塞页面的其他进程
无阻塞脚本:
1,延迟脚本:使用<script>的defer属性(仅适用于IE4+和Firefox3.5以上版本)
2,动态创建<script>来下载并执行代码
3,适用XHR对象下载js代码并注入页面
无阻塞脚本工具:YUI3,LazyLoad , LABjs
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
第三章:DOM编程
浏览器把DOM和javascript 独立实现,两个相互独立的功能只要通过接口彼此连接,就会产生消耗。
性能优化:
(1),最小化DOM访问次数,尽可能在javascript端处理
E.g:
function innerHTMLLoop(){
for(var count=0;count<15000;count++){
document.getElementById('here').innerHTML += 'a';
}
}
优化后:
function innerHTMLLoop(){
var content = '';
for(var count=0;count<15000;count++){
content += 'a';
}
document.getElementById('here').innerHTML = countent;
}
(2) , HMTL集合优化
HTML集合包含了DOM节点引用的类数组对象,处于一种“实时状态”实时存在,
当底层文档对象更新时,它也会自动更新
HTML集合有:document.getElementsByName() , document.images , document.links等
//一个意外的死循环
//alldivs.length每次迭代都会增加,反映出的是底层文档的当前状态
var alldivs = document.getElementsByTagName('div');
for(var i=0;i<alldivs.length;i++){
document.body.appendChild(document.createElement('div'));
}
优化方法: 1,2运行速度差不多
1,把集合长度缓存到一个变量中,,并在迭代中使用
var alldivs = document.getElementsByTagName('div');
var len = alldivs.length
for(var i=0;i<len;i++){
/* 处理代码 */
}
2,如果需要经常操作集合,建议把集合拷贝到一个数组中
var alldivs = document.getElementsByTagName('div');
var arr = toArray(alldivs); //toArray 自定义的集合到数组的函数
for(var i=0;i<arr.length;i++){
/* 处理代码 */
}
3,对于任何类型的DOM访问,当同一个DOM属性或方法需要多次访问时,最好使用一个局部变量缓存此变量
function collentionNodesLocal(){
var coll = document.getElementsByTagName('div');
len = coll.length;
name = '';
el = null;
for(var count=0;count<len;count++){
el = coll[count];
name = el.nodeName;
name = el.nodeType;
name = el.tagName;
}
return name;
}
(未完待续.......)
读《高性能javascript》笔记(一)的更多相关文章
- [在读] javascript权威指南第六版
耽搁了有大半年没看,记得当时看到5分之2了吧.权威指南是不管读几遍都能觉得有新收获的书^^
- javascript权威指南笔记
最近每天工作之余看下js的细节部分,时间不是很多,所以看的进度也不会太快,写个博客监督自己每天都看下. 以前不知道的细节或者以前知道但是没注意过的地方都会记录下来,所以适合有一定基础的,不适合零基础新 ...
- 1.语言概述-JavaScript权威指南笔记
上周三的时候交给老板目前的项目第一个迭代回顾会的总结.原本是以综述性的表述方式写的,交给他之后表示程序员不要长篇大论.总结要分为优点缺点期望等等块,每块列出条目,简明扼要的表达出来.这里也用这种风格. ...
- 2.语言概述-JavaScript权威指南笔记
上周三的时候交给老板目前的项目第一个迭代回顾会的总结.原本是以综述性的表述方式写的,交给他之后表示程序员不要长篇大论.总结要分为优点缺点期望等等块,每块列出条目,简明扼要的表达出来.这里也用这种风格. ...
- javascript权威指南笔记--javascript语言核心(四)
对象: 通过引用(而非值)来操作对象: var obj = {"x":1,"y":2}; var copyObj = obj; copyObj.x = 5; c ...
- javascript权威指南笔记--javascript语言核心(三)
1.var用来声明一个或多个变量.全局变量是全局对象的属性,它无法通过delete删除. 如果var语句中的变量没有指定初始化表达式,那么这个变量的初始值为undefined. 变量声明语句会被提前到 ...
- javascript权威指南笔记--javascript语言核心(二)
1.函数作用域:在函数内声明的所有变量在函数体内始终是可见的.这意味着在变量声明之前甚至已经可用. *“声明提前”:javascript函数里声明的所有变量(但不涉及赋值)都被提前至函数的顶部. fu ...
- javascript权威指南笔记--javascript语言核心(一)
1.javascript的数据类型分为两类:原始类型和对象类型. 原始类型包括字符串.数字.布尔值.null.undefined. 对象是属性的集合,每个对象都由“名/值”对构成.数组和函数是特殊的对 ...
- 3.类型、值和变量-JavaScript权威指南笔记
开始变得有意思起来了,然而第三章还是以基础知识了解的角度阐释相关的概念,并没有深入到结合代码以及要实现的功能讲用法和原理的程度. 1.概论. value:程序的运行是对值的操作. type:能够表示并 ...
- 2.词法结构-JavaScript权威指南笔记
今天是第二章.所谓词法结构(lexical structure),就是写代码中最基本的东西,变量命名,注释,语句分隔等,这是抄书抄的... 1.字符集,必须是Unicode,反正Unicode是ASC ...
随机推荐
- ThinkPHP中的快捷函数小结
U() 制作url地址的快捷函数 C(名称) 获得配置变量(convertion.php config.php)信息C(名称,值) 设置配置变量信息 L() 获得语言变量信息E() 给页面输出错误信息 ...
- 在SQL Server里我们为什么需要意向锁(Intent Locks)?
在1年前,我写了篇在SQL Server里为什么我们需要更新锁.今天我想继续这个讨论,谈下SQL Server里的意向锁,还有为什么需要它们. SQL Server里的锁层级 当我讨论SQL Serv ...
- sealed、new、virtual、abstract与override 趣解
1. sealed——“断子绝孙” 密封类不能被继承.密封方法可以重写基类中的方法,但其本身不能在任何派生类中进一步重写.当应用于 方法或属性时,sealed修饰符必须始终与override一起使用. ...
- 适配器模式 - Adapter
Adapter Pattern, 适用场景: 接口匹配兼容: 客户代码统一调用同一接口: 在.NET中,DataAdapter用作DataSet和数据源之间的适配器以保存和检索数据. 参考:
- EntityFrame Work 6 Code First 配置字段为varchar 类型
EntityFrame Work 6 配置字符串属性是否支持Unicode 内容 默认情况下,字符串为Unicode(SQLServer 中的nvarchar).您可以使用IsUnicode 方法指定 ...
- Guava学习-缓存
Guava的缓存是本地缓存,所以我觉得在使用场景上适合那种并非是高一致性的场景中,而且他的实现和ConcurrentHashMap很类似.但是毕竟是缓存嘛,肯定有自动清除的功能.外加一些什么清除策略等 ...
- MyEclipse或者Eclipse内存溢出问题
对于一些项目,我们经常会遇到内存溢出的问题,这个时候我们就需要进行设置JDK的各个内存的大小了. 如果是运行项目以后出现问题的话,那么主要还是jdk或者是tomcat的内存问题,至于网上说的xxx.i ...
- S1的小成果:MyKTV系统
转眼之间,已经到了2016年,即新的一年了!S1也结束了,收获的也不多 ,想想最后留给大家的就一个KTV项目了. 希望大家看时有所收获 现在我们一起来看KTV前台管理 主界面的运行 ...
- 轻量、强大的代码编辑器控件-WinForm完美版
前段时间做个小项目需要用到一个代码编辑器控件,但网上搜了半天,居然没发现一个完全满意的编辑器.现有的一些编辑器有: FastedTextBox 优点:1. 轻量. 2. 样式美观. 3. DEMO完 ...
- qq空间返回顶部代码
点击这里体验效果 以下是源代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "h ...