<<高性能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 处理耗时后台工作.

其他章没有特别的体会或者觉得就是这么做的,不存在一般性误导就不再赘述。

原文地址:https://www.cnblogs.com/wusong/p/2287051.html