附录 B Chrome DevTools 调试技巧
5 分钟阅读
附录 B Chrome DevTools 调试技巧
Chrome DevTools 是前端开发者的"瑞士军刀"。对于 Vue 开发者来说,它不仅仅是普通的浏览器调试工具——配合 Vue DevTools 插件,DevTools 能成为 Vue 应用的"X光机"。这一章我们系统介绍 Chrome DevTools 的核心面板和调试技巧,让你在调试 Vue 应用时事半功倍。
B.1 Vue DevTools 使用指南
概述
Vue DevTools 是 Vue 官方出品的浏览器调试插件,专门用于调试 Vue 3 应用。它以 Chrome / Edge 扩展的形式存在,安装后在浏览器的开发者工具(F12)里会增加几个 Vue 专属面板。
安装地址:
- Edge:https://microsoftedge.microsoft.com/addons/detail/vuejs-devtools/
- Chrome:https://chrome.google.com/webstore(需要科学上网)
面板介绍
Components(组件)面板是最常用的面板,可以查看整个应用的组件树。
┌─────────────────────────────────────┐
│ Components Timeline Pinia Router │
├─────────────────────────────────────┤
│ 🔍 Filter components... │
├──────────────┬──────────────────────┤
│ Components │ ┌─ App │
│ ├─ RouterView│ │ ┌─ TheHeader │
│ │ └─ Home │ │ │ └─ NavBar │
│ ├─ UserCard │ │ └─ MainContent │
│ └─ Modal │ │ ├─ UserList │
│ │ │ └─ Footer │
├──────────────┴──────────────────────┤
│ State │
│ ├─ count: 0 │
│ ├─ user: { name: "小明", age: 25 }│
│ └─ isLoading: false │
├─────────────────────────────────────┤
│ Props (only in child components) │
│ ├─ title: "Vue 3 教程" │
│ └─ count: 0 │
└─────────────────────────────────────┘
组件树:展示整个 Vue 应用的组件嵌套关系。点击任意组件,右侧会显示该组件的 state(状态)和 props。
状态编辑:在 DevTools 里可以直接修改 state 的值——修改后页面会实时更新。这在调试 UI 效果时非常有用,不需要改代码刷新页面。
时间旅行(Timeline):记录组件状态变化的历史,可以回放组件是如何一步一步变成当前状态的。
实用技巧
- 搜索组件:顶部搜索框可以按组件名或 prop 名搜索组件
- 跳转到源码:点击组件的
Define或Inspected区域,可以跳转到源代码 - 手动刷新:点击 “Refresh” 按钮强制刷新组件树(当 DOM 变化但组件树没更新时)
- 检查 DOM 对应的组件:在 Elements 面板里右键点击元素,选择 “Inspect Vue Component”,可以直接跳转到 DevTools 里对应的组件
B.2 性能分析面板
Performance 面板
Chrome DevTools 的 Performance 面板可以录制页面运行时的性能表现,包括:
- 帧率(FPS):绿色的帧率条越高越好,出现红色表示掉帧
- 用户体验指标:Long Task(长任务)、FCP(首次内容绘制)、LCP(最大内容绘制)
- 调用栈:哪个函数耗时最长,一目了然
flowchart LR
A["点击 Record 按钮"] --> B["执行操作"]
B --> C["点击 Stop 按钮"]
C --> D["分析火焰图"]
D --> E["找出性能瓶颈"]
style A fill:#42b883,color:#fff
style E fill:#e63946,color:#fff录制 Vue 应用性能时的操作流程:
- 打开 DevTools → Performance 面板
- 点击 “Record” 按钮
- 在页面上执行你要分析的操作(如打开弹窗、切换 Tab、滚动列表)
- 点击 “Stop” 停止录制
- 查看火焰图(Flame Chart),找出红色的 Long Task
Vue 性能分析
在 Vue DevTools 的 Timeline 面板里,可以查看组件的渲染时间:
render:组件渲染耗时patch:虚拟 DOM 打补丁耗时force update:强制更新耗时
如果某个组件的 render 时间特别长,说明它可能是性能瓶颈所在——考虑用 shallowRef、减少不必要的响应式追踪、或者用 v-memo 缓存子组件。
B.3 断点调试
Sources 面板
断点调试是排查"程序行为不符合预期"时最有效的手段。Chrome DevTools 的 Sources 面板可以给 JavaScript 代码下断点:
常见断点类型:
| 断点类型 | 添加方式 | 适用场景 |
|---|---|---|
| 行断点 | 点击代码行号 | 最常用,精确到某一行 |
| 条件断点 | 右键行号 → 添加条件 | 只在特定条件下中断 |
| XHR 断点 | XHR/Fetch Breakpoints 面板 | 请求特定 API 时中断 |
| 事件断点 | Event Listener Breakpoints 面板 | 监听鼠标点击等事件时中断 |
| 异常断点 | Pause on caught exceptions | 代码抛出异常时自动中断 |
Vue 代码调试技巧:
| |
条件断点:当列表很长,你想只在处理特定 id 时中断:
id === '12345' && data.name === 'admin'
Watch 面板
在断点中断时,可以在 Watch 面板里实时查看变量的值:
| |
B.4 Network / Application 面板
Network 面板
Network 面板记录了页面发出的所有网络请求,是排查"接口请求慢"或"请求失败"问题的首选工具。
常用功能:
- 筛选请求类型:点击
Fetch/XHR只看接口请求,点击Img只看图片请求 - 查看请求详情:点击某个请求可以看到请求头、响应头、请求体、响应体
- 复制请求为 cURL:右键请求 → Copy → Copy as cURL,可以把请求复制成 curl 命令行
- 重发请求:右键请求 → Replay,可以重新发送这个请求
Filter 输入框常用筛选语法:
method:POST /api/users # POST 方法且 URL 包含 /api/users
status:400 # 状态码为 400
domain:api.example.com # 指定域名
larger:1000 # 响应大于 1000 字节
Application 面板
Application 面板查看页面的资源存储情况:
Local Storage / Session Storage:查看浏览器本地存储的数据。Vue 的 useLocalStorage(VueUse)就是存在这里。
Cookies:查看和编辑 Cookie 信息。登录状态 Token 通常存在 Cookie 里。
Service Workers:查看 PWA 的 Service Worker 注册情况,离线缓存状态。
Cache Storage:查看 PWA 的静态资源缓存。
Frames:查看页面的 iframe 嵌套情况。
附录小结
本章我们介绍了 Chrome DevTools 在 Vue 开发中的核心用法:
- Vue DevTools:组件树查看、状态编辑、时间旅行调试
- Performance 面板:录制页面性能、发现 Long Task、优化帧率
- Sources 面板:断点调试、条件断点、Watch 变量
- Network 面板:接口请求分析、cURL 复制、重发请求
- Application 面板:LocalStorage、Cookies、Service Worker
Chrome DevTools 的功能远不止这些,推荐阅读官方文档 https://developer.chrome.com/docs/devtools/ 深入学习。熟练掌握 DevTools 是前端开发者的必备技能。