JS相关概念

2017-07-04  本文已影响0人  hellowade

1.CSS和JS在网页中的放置顺序是怎样的?

2.解释白屏和FOUC

3.async和defer的作用是什么?有什么区别

作用:加载和渲染后续文档元素的过程将和 script.js 的加载与执行并行进行,如果没有 defer 或 async,浏览器会立即加载并执行指定的脚本,“立即”指的是在渲染该 script 标签之下的文档元素之前,也就是说不等待后续载入的文档元素,读到就加载并执行。
async和defer的区别主要在于script.js 的执行。
async的作用:加载和渲染后续文档元素的过程将和 script.js 的加载与执行并行进行。
defer的作用:加载后续文档元素的过程将和 script.js 的加载并行进行,但是 script.js 的执行要在所有元素解析完成之后,DOMContentLoaded 事件触发之前完成。
如果脚本涉及少量DOM操作,则defer属性更优:因为html解析未完成前,可能DOM tree未形成,此时进行DOM操作,可能失败。
如果是多个脚本,则其执行顺序为:
a、多个defer脚本,根据HTML5的规定,会按照定义的加载顺序,按序执行;
b、多个async脚本,由于加载完成立即执行,所以是乱序;因此其更适合脚本之间无依赖关系的情况。

然后从实用角度来说呢,首先把所有脚本都丢到 之前是最佳实践,因为对于旧浏览器来说这是唯一的优化选择,此法可保证非脚本的其他一切元素能够以最快的速度得到加载和解析。

上一篇下一篇

猜你喜欢

热点阅读