一、基础问题排查
-
检查网络连接
- 确认网络是否正常
- 检查资源是否被拦截(如广告屏蔽插件)
- 查看控制台Network面板,是否有请求失败
-
查看控制台错误
- 打开开发者工具(F12)
- 检查Console中的JS错误
- 查看Network面板资源加载状态
二、资源加载问题
-
检查关键资源
// 示例:检查关键资源是否加载 // 1. HTML文件是否正常返回 // 2. CSS文件是否加载(影响渲染) // 3. JS文件是否加载和执行 -
HTML结构问题
- 检查DOM结构是否正确
- 查看
<div id="root"></div>等容器是否存在 - 检查SPA框架的挂载点
三、JavaScript问题
-
JS执行错误
- 语法错误导致JS停止执行
- 依赖加载顺序问题
// 常见问题示例 // 1. 变量未定义 // 2. 异步加载问题 // 3. 第三方库冲突 -
框架相关
// React示例 // 1. 检查ReactDOM.render是否执行 // 2. 组件渲染是否报错 // 3. 路由配置是否正确 // Vue示例 // 1. new Vue()是否实例化 // 2. el选项是否正确 // 3. 模板编译是否正常
四、CSS相关问题
- 样式问题
- CSS加载失败导致布局错乱
- 关键样式缺失
- CSS-in-JS运行时错误
五、性能问题
-
资源加载超时
- 检查资源大小是否过大
- 网络慢导致渲染延迟
- 代码分割配置问题
-
内存溢出
- 检查是否有无限循环
- 内存泄漏导致页面崩溃
六、调试策略
-
逐步排查
// 1. 简化重现环境 // 2. 添加调试代码 console.log('1. HTML loaded'); console.log('2. JS executing'); console.log('3. Framework initialized'); // 3. 使用try-catch捕获错误 try { // 应用初始化代码 } catch (error) { console.error('初始化失败:', error); } -
版本和兼容性
- 检查浏览器兼容性
- 依赖版本是否冲突
- Polyfill是否缺失
七、常用解决方案
- 应急处理
// 1. 添加加载状态 // 2. 错误边界(React) // 3. 降级方案 // 添加全局错误监控 window.addEventListener('error', function(e) { console.error('全局错误:', e); });
八、预防措施
-
开发阶段
- 代码质量检查(ESLint)
- 单元测试和E2E测试
- 使用TypeScript减少运行时错误
-
监控报警
- 前端监控系统(错误收集)
- 性能监控
- 用户行为追踪
九、快速检查清单
- 控制台是否有红色错误
- 网络请求是否都成功
- 关键JS文件是否加载
- 框架是否初始化
- 挂载点是否存在
- 是否有语法错误
- 浏览器兼容性
- 资源路径是否正确
通过这种系统性排查,通常能快速定位白屏问题的原因并解决。关键是要有条理地从简单到复杂逐步排查。