页面加载白屏问题

528 阅读2分钟

问题

image.png

原因

从网络方面检测

  1. 先确保网络连接顺畅
  2. 再检查 URL 地址是否错误
  3. 打开 控制台 查看是否有报错信息
  4. 查看接口访问 是否有请求
  5. 查看 路由 是否有 path错误 ,导致加载了不存在的页面

从js和css方面检测

排除了 网络问题 以后,如果还是白屏,那一般都是 css和js 加载造成的;css和js 会造成阻塞渲染。比如不正确的引入css和js , 就会导致它们的加载速度过长,从而导致白屏现象。

解决

正确的引入方式是:

<head> 标签中引入css:因为在加载HTML 前不先渲染css 的话,整个页面会乱掉;
</body> 标签之前、body 标签中html 内容的后面 ,引入 js:因为浏览器加载script 标签时,处理内部代码的顺序都是从上到下 依次执行的,如果在 html 内容前就引入js 的话,那么就会导致,在所有的代码处理完毕之前,会阻塞其他资源的加载;会导致页面的其他内容都无法显示,因此如果不规范引入js的话,会对页面的其他内容带来影响。

补充说明:
script 标签里可以添加async或defer 属性,如果不添加 这个属性,浏览器就会立即加载并执行脚本;也就是在渲染script 标签之前,不等后续的文档加载前执行;

他们的区别在于:

async:加载和渲染后续文档元素的过程将和 script.js的加载与执行并行进步(异步)
defer: 加载后续文档元素的过程中和script.js的加载与执行并行进步(异步)。但是script.js的执行要在所有元素解析完成之后,DOMContentLoaded 事件触发之前完成。
defer 和async 在网络读取(下载) 方面是一样的,都是异步的 ;区别在于脚本下载完成之后什么时候开始执行。