js是阻塞页面的加载,会影响页面加载的速度,js文件的大小和算法的复杂程度影响着页面的加载速度。浏览器在下载和执行脚本时出现阻塞的原因在于,脚本可能会改变页面或javascript的命名空间,它们对后面内容造成影响。一个典型的例子就是在页面中使用document.write()。
浏览器从服务器接收到html代码,就开始解析html,根据html的代码会自上向下进行构建,同时构建渲染树,如果遇到js文件加载执行,将会阻塞DOM树的构建,遇到css文件,又会阻塞渲染树的构建。
如今人们更喜爱相对于呈现用户面前的“快”网页,即呈现出来的时间越短,内容也不是很糟糕,更受人欢迎,如果一个网页加载没有反应,时间超过两秒甚至更多,对于用户来说,这个网页是差劲的
所以,script标签应该放在</body>标签的前面,因为,放在body标签后会避免出现网页加载空白的情况,可持续的给用户提供视觉反馈,同时在有些情况下,会降低错误的发生。页面渲染的时候,相对于其他的图片或css来说js是阻塞的,所以等页面的渲染树成行以后再引入js就可以避免白屏现象.
css标签应放在<head></head>标签之间,如果放在</body>标签的前面,当DOM树构建完成,渲染树开始构建,等构建完成,浏览器需要渲染整个页面,其实可以边渲染便构建,减少资源的浪费