延迟加载和异步加载

JS加载过程阻塞,解决方法?------指定script标签的async属性,如果async='async',脚本相对于页面的其余部分异步地执行(当页面继续进行解析时,脚本将被执行),如果不使用async且defer=‘defer’:脚本将在页面完成解析时执行

渲染过程中遇到js文件如何处理?-----js的加载、解析与执行会阻塞文档的解析,即在构建DOM时,HTML解析器若遇到了js,那么他会暂停文档的解析,将控制权交给js引擎,等js引擎运行完毕,浏览器再从中断的地方恢复继续解析文档,即想要首屏渲染的越快,就越不应该在首屏就加载js文件,这也是都建议将script标签放在body标签底部的原因,当然在当下,并不是说script标签必须放在底部,因为你可以给script标签添加defer或者async属性

script标签中defer和async的区别?-------如果没有defer或async属性,浏览器会立即加载并执行相应的脚本,他不会等待后续加载的文档元素,读取到就会开始加载和执行,这样会阻塞了后续文档的加载。

蓝色代表js脚本网络加载时间,红色代表js脚本执行时间,绿色代表html解析,defer和async属性都是去异步加载外部的js脚本文件,他们都不会阻塞页面的解析,其区别如下:执行顺序:多个带async属性的标签,不能保证加载的顺序;多个带defer属性的标签,按照加载顺序执行;脚本是否并行执行:async属性,表示后续文档的加载和执行与js脚本的加载和执行是并行进行的,即异步执行;defer属性,加载后续文档的过程和js脚本的加载(

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

前端面试题 文章被收录于专栏

前端面试的一些常问问题、问题的具体实现(可直接运行)以及底层原理

全部评论

相关推荐

12-13 14:51
已编辑
井冈山大学 算法工程师
龙虾x:算法比你强的没有你美,比你美的…..算了已经没有比你美的了
工作两年想退休了
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务