当前位置:首页 > 技术文章 > 正文内容

如何使用 Chrome DevTools(及 Vue Devtools)调试 Vue.js 应用

调试 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**:底层断点、网络、性能剖析、源码编辑

>

> 二者结合,能让你快速定位组件逻辑、数据流与性能瓶颈,并在真实源码上做精细调试。

相关文章

Ubuntu 25.04发行版登场:Linux 6.14内核,带来多项技术革新

IT之家 4 月 18 日消息,科技媒体 linuxiac 昨日(4 月 17 日)发布博文,报道称代号为 Plucky Puffin 的 Ubuntu 25.04 发行版正式上线,搭载最新 Linu...

2024年10 大 Linux 桌面发行版推荐

年已过半,现在是探究 2024 年最流行的 Linux 发行版的最佳时机。Linux 是一个开源操作系统,构建在 Linux 内核上,并集成了 GNU shell 实用程序、桌面环境、应用程序、包管理...

【Vue3 基础】05.组件化(组件使用vuex)

这是 Vue3 + Vite + Pinia +TS + Element-Plus 实战系列文档。最近比较忙没什么时间写文章,争取早日把这个系列完结吧~生命周期和模板引用在本章之前,我们通过响应式 a...

Vue2的16种传参通信方式(vue传参数)

前言先直入主题列出有哪些传参方式,下面再通过事例一一讲解。props(父传子)$emit与v-on (子传父)EventBus (兄弟传参).sync与update: (父子双向)v-model (父...

用IDEA开发如何用Git快速拉取指定分支代码?

1,准备空的文件夹,git init2,关联远程仓库,git remote add origin gitlab地址3,拉取远程分支代码,git pull origin 远程分支名再用IDEA打开项目即...

Python 实现 | 通过 Gitlab API 获取项目工程、分支、commit 提交记录

前提在 gitlab 中你的工程创建 Access Token然后你会得到一个 21 位 access token,代码中需要用到。代码''' 说明: 1.登录gitlab的r...