宝哥软件园

脚本加载方式总结

编辑:宝哥软件园 来源:互联网 时间:2021-10-21

1.静态加载CSS,页面渲染时可以并行下载图片资源文件,不会阻塞。在IE8、FF下,还可以支持JS的并行下载。虽然加速了页面的JS下载,但是页面渲染上JS的堵塞依然存在。只有加载了JS,页面的其余部分才能继续呈现。放在头部的脚本是最糟糕的,因为头部是页面后部所必需的。如果没有加载Head部分,Body部分将不会开始解析。在解析正文之前,页面是空白的。在浏览器实现方面,很容易理解页面静态Script的哪个部分被阻塞了,因为完全有可能修改JS代码中的页面元素来影响Dom结构。因为浏览器对JS行为的不可预测性,所以它们必须等到加载了上一个Script之后才能呈现。因此,最好的做法是将Script放在页面底部的靠近/正文的位置。至于JS加载对前台性能的影响,雅虎的优化原则之一就是减少Http请求的数量,压缩JS,合并JS,减少JS的数量。如果业务中有很多独立的、模块化的js需要加载,可以考虑在线打包方案。2。延迟加载W3C标准HTML4.01为Script标签定义了一个延迟属性,表示JS不会改变Dom内容,浏览器可以继续解析和渲染,而不会阻塞Script。http://

但是,某些浏览器不支持此属性。所以它不是一个好的跨浏览器解决方案。3.动态加载复制代码的代码如下:脚本类型=' text/JavaScript ' var js=document . create element(' script ');js.src='**。js ';document . getelementsbytagname(' head ')[0]。append child(js);/script这段代码创建一个脚本标记,并将该标记插入到文档中。关键是这个脚本是异步加载的,不会影响页面渲染的过程,也不会阻塞页面内容的显示。虽然这种方式不会阻止页面资源的加载,但它可能会阻止其他脚本。不同的浏览器在这方面有着非常不同的表现。参见本文,动态引入的外部js文件在不同浏览器中的加载顺序是不一致的。有两点突出:1。相同的动态加载代码,不同的浏览器对动态加载的JS有不同的表现,是否阻塞下一个脚本标签3

2.动态加载的代码顺序不同,对于同一个浏览器,结果可能会大不相同,比如:1

2

如果按顺序改变代码,IE的性能会有所不同。因此,对于动态加载脚本,需要注意的一个问题是动态加载的JS脚本的接口依赖性。这个问题的解决方案并不复杂,不仅根据实现业务的需要跟踪加载脚本的加载状态。readyState属性用于判断IE下的加载状态,IE浏览器不支持。加载脚本后,调用onload方法。优秀的延迟加载库瑞安格罗夫的拉泽罗德https://github.com/rgrove/lazyload凯尔辛普森的拉js http://labjs.com/.

更多资讯
游戏推荐
更多+