听小姐姐讲 CSS 重排、重绘和合成
如何控制Web资源加载的优先级?
1.js运行环境
js作为脚本语言运行在浏览器中,浏览器就是js的运行环境。对于众多风云的浏览器厂商来说, 他们的内核又是不一样的。浏览器内核分为两种:渲染引擎和js引擎。
渲染引擎:负责网页内容呈现的。
Js引擎:解释js脚本,实现js交互效果的。
1.1常见的内核:
1.2 现在我们有一个js文件,那么浏览器是如何执行它的呢?
首先我们js文件以scirpt标签元素呈现在html里面的。浏览器根据html文件以此解析标签,当解
析到scirpt标签时,会停止html解析,阻塞住,开始下载js文件并且执行它,在执行的过程中,如
果是第一个js文件此时浏览器会触发首次渲染(至于为什么,自己做下实验,不懂的可以留言)。
所以出现一个问题js文件大大阻碍了html页面解析及渲染,所以引入async和defer两个属性(对于
首屏优化有很大的提升,也要谨慎使用)
async:开启另外一个线程下载js文件,下载完成,立马执行。(此时才发生阻塞)
defer:开启另一个线程下载js文件,直到页面加载完成时才执行。(根本不阻塞)