<<高性能Javascript>>读后总结
出师自白:
花了一周时间第一遍看完这本书,可能要搁置一段时间或者被某个问题困惑才会再拿起这本书。纵观全书,为之前犯过的错误悔恨不已,不禁感叹,若是早点看到这本书,之前所倾心投入的产品该提供多大的性能,多少困扰整个组的问题可以迎刃而解啊。错误已不可修复,因为已经离开之前的产品。个人从书中摘抄出来的观点肯定有限于与目前个人的水平,希望以后还能再更新或来者提出宝贵意见。
第一章,加载和执行。
1.3无阻塞脚本
dev这个控件,一直用到12这个版本。有个复杂页面算是焦点功能页,局域网内第一次加载完所有它的脚本居然要3秒多啊,神一样的控件库,神一样的设计思想。所有脚本在捆在一个资源里。最后只能不停的减少它的控件,最终放弃了它的鸡肋皮肤功能。
一些原则:
a, </body>标签闭合之前,所有<script>标签放到页面地步,这能确保脚本在执行前页面可以完成渲染。很多不负责任的教材,例子都是随意相反这个原则。
b,合并<script>标签,标签越少越好。无论外链还是内嵌脚本.
c,多种无阻塞下载javascript方法:
——<script>标签的defer属性,仅使用与IE和firefox3.5以上版本。
——动态<script>标签。
——XHR下载。
第二章 数据访问
a,一定要了解,理解作用域。
b,访问直接量和局部变量的速度最快。
c,避免使用with,因为它会改变运行期上下文作用域。同样,try-catch语句中的catch也会。
d,嵌套的对象成员会明显影响性能,尽量少用。
e,属性货方法在原型链中的位置越深,越慢。
第三章,DOM编程。
a,最小化DOM访问次数
b,如果需要多次访问某个DOM节点,局部变量存储之。
c,小心处理HTML集合,因为它实时联系这底层文档,把集合长度缓存到一个变量,并在迭代中使用它,如果需要经常操作集合,建议拷贝到数组中。
d,如果可能的话,使用更快的API,比如querySelectorAll()和firstElementChild()
e,留意重绘重排,批量修改样式时,离线操作DOM树,使用缓存,并减少访问布局信息的次数。所谓布局信息包括:
offsetXXXX,scrollXXX,clientXXX,getComputStyle();
f,使用事件委托来减少事件处理器的数量(事件泵)。
第六章 快速响应的用户界面
a,定时器分割长时间任务技巧。
b,Web Workers 处理耗时后台工作.
其他章没有特别的体会或者觉得就是这么做的,不存在一般性误导就不再赘述。