最近在全力整理《高性能JavaScript》的文档,并重新学习一遍,放在这里方便大家查看并找到自己需要的知识点。
高性能JavaScript
第1章:加载和执行
- 脚本位置
- 阻止脚本
无阻塞的脚本
- 延迟的脚本
- 动态脚本元素
-
XMLHTTPRequest
脚本注入 - 推荐的无阻塞模式
- 小结
第2章:数据存取
管理作用域
- 作用域链和标识符解析
- 标识符解析的性能
- 改变作用域链
- 动态作用域
- 闭包、作用域和内存
对象成员
- 原型
- 原型链
- 嵌套成员
- 缓存对象成员值
第3章:DOM编程
浏览器中的DOM
- 天生就慢
DOM访问与修改
-
innerHTML
对比DOM方法 - 节点克隆
- HTML集合
- 遍历DOM
-
重绘与重排
- 重排何时发生
- 渲染树变化的排队与刷新
- 最小化重绘与重排
- 缓存布局信息
- 让元素脱离动画流
- IE和
:hover
- 事件委托
- 小结
第4章:算法与流程控制
循环
- 循环类型
- 循环性能
- 基于函数的迭代
条件语句
-
if-else
对比switch
- 优化
if-else
- 查找表
-
递归
- 调用栈限制
- 递归模式
- 迭代
Memoizaton
- 小结
第5章:字符串和正则表达式
字符串连接
- 加
+
和加等+=
操作符 - 数组项合并
String.prototype.concat
- 加
正则表达式优化
- 正则表达式工作原理
- 理解回溯
- 回溯失控
- 基准测试的说明
- 更多提高正则表达式效率的方法
- 何时不用正则表达式
去除字符串首尾空白
- 使用正则表达式去除首尾空白
- 不使用正则表达式去除首尾空白
- 混合解决方案
- 小结
第6章:快速响应的用户界面
浏览器UI线程
- 浏览器限制
- 多久才算太久
使用定时器让出时间片段
- 定时器基础
- 定时器精度
- 使用定时器处理数组
- 分割任务
- 定时器与性能
Web Workers
- Worder运行环境
- 与Worker通信
- 加载外部文件
- 实际应用
第7章:Ajax
数据传输
- 请求数据
- 发送数据
数据格式
- XML
- JSON
- HTML
- 自定义格式
- 数据格式总结
Ajax性能指南
- 缓存数据
- 了解Ajax类库的局限
- 小结
第8章:编程实践
- 避免双重求值
- 使用
Object/Array
直接量 避免重复工作
- 延迟加载
- 条件预加载
使用速度快的部分
- 位操作
- 原生方法
- 小结
第9章:构建并部署高性能JavaScript应用
Apache Ant
- 合并多个JS文件
- 预处理JS文件
- JS压缩
- 构建时处理与运行时处理的对比
- JS的HTTP压缩
- 缓存JS文件
- 处理缓存问题
- 使用内容分发网络(CDN)
- 部署JS资源
- 敏捷JS构建过程
- 小结
第10章:工具
- JS性能分析
- YUI Profiler
- 匿名函数
Firebug
- 控制台面板分析工具
- Console API
- 网络面板
- IE开发人员工具
Safari Web检查器(Web Inspector)
- 分析面板
- 资源面板
- Chrome开发人员工具
- 脚本阻塞
- Page Speed
- Fiddler
- YSlow
- dynaTrace Ajax Edition
- 小结