提高JavaScript性能

加载并执行


1.</body>闭合标签之前,将所有的<script>标签放到页面底部。这能确保在脚本执行前页面已经渲染完成


2.每个<script>标签初始下载是都会阻塞页面渲染,应减少页面包含的<script>标签(打包压缩)


3.把一段内嵌脚本放在引用外链样式表的<link>标签之后会导致页面阻塞去等待样式表的下载,这样做是为了确保内嵌脚本在执行时能获得最精确的样式信息,因此不要把内嵌脚本紧跟在<link>标签之后


4. 使用多种无阻塞下载JavaScript的方法
- 使用<script>标签的defer属性
- 使用动态创建的<script>元素来下载并执行代码
- 使用XHR对象下载JavaScript代码并注入页面中




数据存储

1.如果某个跨作用域的值在函数中被应用一次以上,那么就把他存储到局部变量( var doc = documeng; doc.xxxx )


2.点表示法(object.name)比括号表示(object['name'])法在Safari中速度更快


3.属性或者方法在原型链中的位置越深,访问的速度越慢


4.嵌套的对象成员会明显影响性能


5.少用全局变量,因为它总处于作用域链的最末端




DOM编程 (DOM是一个独立于语言的没用于操作XML和HTML文档的程序接口API,所以DOM操作天生就慢)


1.减少DOM访问的次数,把运算尽量留在ECMAScript这一端处理。


2.如果需要多次访问某个DOM节点,请使用局部变量存储他的引用


3.处理HTML集合时,把集合的长度缓存到一个变量中,并在迭代中使用它。如果经常需要操作集合,把集合拷贝到一个数组中(toArray)


4.使用事件委托来减少事件处理器的数量


5.使用动画时,让元素脱离文档流(比如 展开/折叠 先让元素绝对定位,完成时候恢复定位)




算法和流程控制


1.不要用for-in来遍历数组成员




快速响应的用户界面


1.高效的管理UI线程就是要确保javas不能运行太长时间


2.任何JavaScript任务都不应当执行超过100ms


3.JavaScript运行期间,浏览器响应用户交互的行为存在差异


4.处理纯数据或者与浏览器UI无关的长时间运行脚本,可以尝试Web Workers


Ajax

1.使用XHR时,GET请求的数据会被缓存起来,如果需要多次请求同一数据的话,它会有助于提升性能(长度:2048字节)




编程实践

1.避免双抽求值


2.使用Objcet/Array直接量


3.避免重复工作
- 延迟加载(复写现有函数)
- 条件预加载(三元表达式)

4.使用速度快的部分
- 位操作
- 原生方法




构建并部署高性能JavaScript应用


1.合并多个JavaScript文件,减少HTTP请求


2.预处理JavaScript文件


3.压缩JavaScript


4.缓存JavaScript文件(添加校验和)


5.使用CDN
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值