页面布局的基本原则?
- 浏览器在加载页面的时候会用到 GUI 渲染线程(渲染浏览器界面的HTML元素)和 JavaScript 引擎线程(负责处理JavaScript脚本程序);
由于JavaScript 引擎线程
在处理过程中会改变界面结构和样式,所以在JavaScript 引擎线程
执行时,GUI 渲染线程
会被挂起。
举个🌰:
1)当我们打开一个网页的时候,浏览器会从服务器中获取HTML内容。
2)当浏览器获取到HTML内容,会从上到下解析HTML的元素。
3)<head>
中元素首先会被解析,此时浏览器还没有渲染页面。<head>
中有用于描述页面数据的元素,也有用于引用外部资源的<link>
元素(图片、css等)以及指向外部资源的<script>
元素
4)浏览器解析到<head>
元素,会暂停解析并下载JavaScript脚本。
5)当JavaScript脚本下载完成之后,浏览器的控制权会交给JavaScript 引擎线程
,当脚本执行完成之后,控制权会交给GUI 渲染引擎
,渲染引擎会向下解析HTML页面。
6)浏览器会解析<body>
元素,页面开始渲染
造成的问题:
如果外部脚本加载时间很长(比如一直无法完成下载),就会造成网页长时间失去响应,浏览器就会呈现“假死”状态,用户体验会变得很糟糕。
解决问题:
可以将JavaScript脚本放在 <body>
最后面。这样可以避免资源阻塞,页面得以迅速展示。也可以使用defer/async/preload
等属性来标记<script>
,从而控制JavaScript的加载顺序。
结束语
总结:大功告成✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️