JavaScript在浏览器中的性能,可以认为是开发者所面临的最严重的的可行性问题。这个问题因JavaScript的阻塞特征变得复杂,也就是说当浏览器在执行JavaScript代码时,就不能同时做其他任何事情。
事实上,多数浏览器使用单一进程来处理用户界面刷新和JavaScript脚本执行,所以同一时刻只能做一件事。JavaScript执行过程耗时越久,浏览器等待响应的时间就越长。
简单说,这以为这script标签每次出现都霸道地让页面等待脚本的解析和执行。无论当前的JavaScript代码时内嵌的还是包含在外链文件中,页面的下载和渲染都必须停下来等待脚本执行完成。这是页面生存周期中的必要环节,因为脚本执行过程中可能会修改页面内容。
尽管如此,还是有几种方法能减少JavaScript对性能的影响:
- body闭合标签之前,将所有的script标签放到页面底部。这能确保在脚本执行前页面已经完成了渲染。
- 合并脚本。页面中的script标签越少,脚在也就越快,响应也更迅速。无论外链文件还是内嵌脚本都是如此。
- 有多种无阻塞下载JavaScript的方法 :
–使用script标签的defer属性
–使用动态创建script元素来下载并执行代码
–使用XHR对象下载JavaScript代码并注入页面中
通过以上策略,可以极大提高哪些需要使用大量JavaScript的Web应用的实际性能。