-
用户访问页面链接,浏览器向服务器请求html文件并下载
-
从上到下的顺序下载文件,主线程同步下载标签中的文件,然后多线程异步解析各文件
-
<head>
标签中的文件下载并解析完成,才会开始执行body里面的代码来渲染页面,js要使用浏览器的js引擎来解析,所以如果<head>
标签中有过大的js,解析过慢,会阻塞页面渲染,出现白屏。过大的css也会阻塞 -
所以将js文件的加载放在body的后面,即
</body>
标签的前面,防止阻塞页面渲染,或者dom元素未加载完成 -
css文件之所以要放在
<head>
标签里,是因为要保证页面刚渲染出来的时候,样式已经是准备好的,不然会闪现乱格式
注意: javascript作为一种脚本语言可以放在html页面中任何位置,但是浏览器解释html时是按先后顺序的,所以前面的script就先被执行。比如进行页面显示初始化的js必须放在head里面,因为初始化都要求提前进行(如给页面body设置css等);而如果是通过事件调用执行的function那么对位置没什么要求的