网站首页 > 精选文章 正文
调试 Vue 应用时,除了熟悉 Chrome 内置的 DevTools,还应同时使用官方的 **Vue.js Devtools** 扩展。下面分步骤详述从环境准备到进阶技巧。
---
## 一、环境准备
1. 开发构建(启用 Source Map)
- Vue CLI 项目默认在 `npm run serve` 下启用 source-map。
- 确保 `vue.config.js` 中未禁用:
```js
module.exports = {
productionSourceMap: false, // 仅生产环境禁用
configureWebpack: {
devtool: 'cheap-module-eval-source-map'
}
}
```
2. 安装并启用 Vue.js Devtools
- Chrome Web Store 安装 “Vue.js devtools” 扩展;或自行编译:
https://github.com/vuejs/vue-devtools
- 启动时打开 DevTools,会多出一个 **“Vue”** 面板。
3. 打开 DevTools
- Windows/Linux:`Ctrl+Shift+I`
- macOS:`+Option+I`
---
## 二、使用 Vue Devtools 面板
### 1. Components(组件树)
- **查看组件树**:左侧列出当前页面所有 Vue 根实例及子组件。
- **选中组件**:点击某组件,右侧显示它的:
- `props`、`data`、`computed`、`watch`、`$attrs`、`$listeners`…
- **修改实时生效**:双击任意字段修改,查看界面变更。
### 2. Vuex(状态管理)
(若项目使用 Vuex)
- **State**:实时查看 store.state
- **Getters**:查看并调用 getters
- **Mutations / Actions**:
- 点击 “Time Travel” 回放状态变更
- 生成时间轴,支持回滚到某一时刻
### 3. Events(事件跟踪)
- **Emitted Events**:列出当前组件发出的 `$emit` 事件及载荷
- **监听**:点击可跳转到触发处
### 4. Performance(性能分析)
- **Record**:录制组件渲染/更新过程
- 点击 **Record**, 在页面做一次交互,Stop 后可分析各组件的 mount/update 开销
---
## 三、结合 Chrome DevTools 调试
### 1. DOM 与组件实例联动
1. Elements 面板中选中 DOM 节点
2. 在 Console 中输入:
```js
// 拿到该节点对应的 Vue 实例
const vm = $0.__vue__;
console.log(vm.$data, vm.$props, vm.$el);
```
3. 或直接在 Console 使用 `$vm0`(等同于最上次在 Components 面板中选中的那个组件实例)。
### 2. 在源代码中设置断点
1. 切换到 **Sources** 面板
2. 左侧 `webpack://` → 找到 `.vue` 文件(或 `.js`)
3. 点开后可看到 `<script>` 里的源码,点击行号设置**行断点**
4. **条件断点**:右击行号 → `Add conditional breakpoint`
```js
// 例如只在 this.count > 5 时中断
this.count > 5
```
5. 程序运行到断点处,DevTools 自动停住,可在右侧 Scope/Watch 查看变量状态,单步调试(F10/F11)。
### 3. Logpoints(日志断点)
无需修改代码,即可在不暂停的情况下打印变量:
```text
右键行号 → Add logpoint
Message: Count now = {this.count}
```
### 4. 监控事件与属性变化
- **DOM 断点**(在 Elements 面板)
- 右键某节点 → Break on → subtree modifications/attribute changes
- **XHR/fetch 断点**
- Sources →右侧 “XHR/fetch Breakpoints” → 勾选,拦截 AJAX 请求
- **监控 DOM 事件**(Console)
```js
monitorEvents($0, 'click') // 监控选中元素的 click 事件
unmonitorEvents($0, 'click')
```
### 5. Network & Async 调试
- **Network 面板**
- 查看各接口请求、响应时间、请求参数、Response
- 右键 → Copy as cURL,可在终端重放请求
- **Async Call Stack**
- 在 Sources → Settings () → 勾选 “Enable async stack traces”,断点时可看到异步调用链
### 6. 性能剖析
- **Performance 面板**
1. 点击 Record,执行交互,然后 Stop
2. 在 Flame Chart 中:
- 找到 Vue 包裹的 `__vue_bracket__` 调用
- 标识出哪些生命周期(`beforeUpdate`、`updated`)或渲染函数耗时最多
- **Coverage 面板**(Ctrl+Shift+P → “Show Coverage”)
- 分析未被执行的 CSS/JS,辅助剔除死代码
---
## 四、进阶技巧
1. **Workspaces**
- 将本地项目目录映射到 DevTools,直接在 Sources 编辑保存到磁盘
2. **Custom Formatter**
- 在 Console → Settings → Enable custom formatters,安装 vue-devtools-formatters,使组件在 Console 中更易阅读
3. **断点自动跳转到 Vue Devtools**
- 在 Vue Devtools 右上齿轮 → “Enable Vue Devtools for Production build”
4. **代理跨域调试**
- 在 Network → Disable Cache(DevTools 打开时禁用缓存)
- 在 Chrome 启动参数中加 `--disable-web-security --user-data-dir=…`(仅用于本地调试)
---
> **总结**
> - **Vue Devtools**:组件/状态/性能的高层可视化
> - **Chrome DevTools**:底层断点、网络、性能剖析、源码编辑
>
> 二者结合,能让你快速定位组件逻辑、数据流与性能瓶颈,并在真实源码上做精细调试。
猜你喜欢
- 2025-07-19 为什么react需要fiber架构,而vue却不需要?
- 2025-07-19 Vue 中的 Props 与 Data 细微差别,你知道吗?
- 2025-07-19 VUE3 你不知道的按钮与菜单权限(vue按钮权限管理)
- 2025-07-19 vue3-响应式基础之reactive(vue3.0响应式原理)
- 2025-07-19 什么是状态管理工具?(vuex)(状态管理具有哪两种方式)
- 2025-07-19 Vue3 开发总踩坑?这 10 个技巧让你少走半年弯路!
- 2025-07-19 Vue3 实战指南:15 个高效组件开发技巧解析
- 2025-07-19 Vue3 终于可以共享自己的屏幕给别人看了!
- 2025-07-19 vue3中到底使用Ref还是Reactive,我和同事吵起来了
- 2025-07-19 Vuex中 getters,...mapGetters使用
- 最近发表
-
- 为什么react需要fiber架构,而vue却不需要?
- Vue 中的 Props 与 Data 细微差别,你知道吗?
- 如何使用 Chrome DevTools(及 Vue Devtools)调试 Vue.js 应用
- VUE3 你不知道的按钮与菜单权限(vue按钮权限管理)
- vue3-响应式基础之reactive(vue3.0响应式原理)
- 什么是状态管理工具?(vuex)(状态管理具有哪两种方式)
- Vue3 开发总踩坑?这 10 个技巧让你少走半年弯路!
- Vue3 实战指南:15 个高效组件开发技巧解析
- Vue3 终于可以共享自己的屏幕给别人看了!
- vue3中到底使用Ref还是Reactive,我和同事吵起来了
- 标签列表
-
- 向日葵无法连接服务器 (32)
- git.exe (33)
- vscode更新 (34)
- dev c (33)
- git ignore命令 (32)
- gitlab提交代码步骤 (37)
- java update (36)
- vue debug (34)
- vue blur (32)
- vscode导入vue项目 (33)
- vue chart (32)
- vue cms (32)
- 大雅数据库 (34)
- 技术迭代 (37)
- 同一局域网 (33)
- github拒绝连接 (33)
- vscode php插件 (32)
- vue注释快捷键 (32)
- linux ssr (33)
- 微端服务器 (35)
- 导航猫 (32)
- 获取当前时间年月日 (33)
- stp软件 (33)
- http下载文件 (33)
- linux bt下载 (33)