小红书-2020前端-卷一(选择题分析)

1.关于html渲染和页面阻塞问题:

(1)在html开始解析dom树的时候,如果遇到css文件或者是js脚本的导入的话,则会先对其进行下载,所以css文件和js脚本会阻塞html的解析

(2)构建CSS Object Model(CSSOM)会阻塞JavaScript的执行。JavaScript的执行也会阻塞DOM的构建。

(3)如果采用普通方式来 加载iframe的话

<iframe src="/path/to/file" frameborder="0" width="728" height="90" scrolling="auto"></iframe>

---iframe会在主页面的onload之前加载

---iframe会在所有iframe的内容都加载完毕之后触发iframe的onload

---主页面的onload会在iframes的onload触发之后触发,所以iframe会阻塞主页面的加载。

---当iframe在加载的过程中,浏览器会标识正在加载东西,处于忙碌状态。

(4)html的渲染过程:

---开源浏览器一般以8k每块下载html页面。

---然后解析页面生成DOM树,遇到css标签或JS脚本标签就新起线程去下载他们,并继续构建DOM。

---下载完后解析CSS为CSS规则树,浏览器结合CSS规则树和DOM树生成Render Tree。

---JavaScript下载后可以通过DOM API修改DOM,通过CSSOM API修改样式作用域Render Tree。

---每次修改会造成Render Tree的重新布局和重绘。只要修改DOM或修改了元素的形状或大小,就会触发Reflow,单纯修改元素的颜色只需Repaint一下(调用操作系统Native GUI的API绘制)。

2.关于跨域请求和网站存储:

PS:其中JSONP是XMLHttpRequest中的一种,这个我也不是很清楚。如果有知道的,可以在评论区留言

3.关于defer和async和时间冒泡:

 

(1)window.requestAnimationFrame()这个API是浏览器提供的js全局方法,针对动画效果。

(2)window.requestAnimationFrame()的优点:浏览器可以优化并行的动画动作,更合理的重新排列动作序列,并把能够合并的动作放在一个渲染周期内完成,从而呈现出更流畅的动画效果。

(3)window.requestAnimationFrame()的使用场景:可以调节重新渲染,大幅提高网页性能。其中最重要的,它可以将某些代码放到下一次重新渲染时执行。避免短时间内触发大量reflow。

猜你喜欢

转载自blog.csdn.net/qq_42099097/article/details/107339114