vue 项目调试你可以这样做

简介: 我觉得调试很多人应该都是做过的,以我为例,大一学 C 语言的时候我特喜欢调试,别人的做题做不出来我让他在 codeBlock 上调试一下就行了,其实这是因为那时候写的 C 语言就几行代码,文件结构简单

我觉得调试很多人应该都是做过的,以我为例,大一学 C 语言的时候我特喜欢调试,别人的做题做不出来我让他在 codeBlock 上调试一下就行了,其实这是因为那时候写的 C 语言就几行代码,文件结构简单,当然很好调试,后面慢慢接触的项目越来越复杂,刚开始创一个 vue 项目要等几分钟,很多项目代码混淆,乱作一堆,调试也只能去用console.log这种输出控制台的方式调试,后面通过慢慢学习,发现在 vue 项目里面还可以有很多种方式去调试,调试方法如下

前排提示,文章调试环境均为 Chrome 浏览器

源码中加 debugger

6.png

这种方式是之前看文章用到的,并不是我目前主力使用的方法,但是可以作为一个引子先介绍一下

注意,这种方式需要提前打开控制台(F12)

这是一种在源码中加入断点的方式去打印,使用方法也很简单,就是需要调试的地方去加上一个 debugger,然后运行代码就可以去使用了,具体效果可以看下面的 GIF

4.gif

像这种动态的,用户类的操作可以很方便的操作

小结

优点

  1. webpack, vue-cli, vite 等目前使用较多的 vue 项目开发和构建工具都可以使用,只需在源码中打断点,不用担心代码混淆,无法定位 bug 位置
  2. 打完断点后,可以使用逐行调试,跳转到下一个断点等 Chrome devtools(就是 F12 控制台)提供的调试工具,对于 bug 出现在复杂逻辑的位置处可以更进一步解决和理清 bug

缺点

  1. 需要在源码中写 debugger, 用完了要删掉,和 console.log() 一样

直接在 Chrome devtools 上调试

这个方法可以帮助我们去解决刚才 debugger 写断点需要删除的缺点,直接在 Chrome devtools 的 Source 处打断点,什么?你不知道什么是 Chrome devtools?我来教你(绝对不是因为我想水字)

7.png

跟着上面图片做准没错

至于调试实操,还是用刚才熟悉的位置,打上断点,执行操作,效果请看下面的 GIF 图

5.gif

注意小细节,注释掉 debugger 的位置,我们直接在 Chrome 浏览器中手动加上断点,不用在源码中写 debugger, 浏览器随开随用,非常人性化,非常好用

可能有用过 chrome devtools 的家人们想要问了,你这个 info.vue?fc24 的奇奇怪怪的文件名是什么鬼,我用 vue 的时候都找不到我原来代码喔,都是一些混淆的代码喔,其实这个也没错,因为 webpack 这种开发构建工具在给我们前端提供工程化的同时还帮我们微操了好一些(没错 webpack 是微操大师),如果你不懂 webpack 的原理的话可能调试比较困难(说实话我也不是很懂 webpack),导致我们找源文件的时候就只看到了下面这些

8.png

找到源文件

看到上面的图不要傻掉,其实真正的源文件在这里

9.png

然后看一下,真正的源文件目录结构,注意,有小细节,存在一些不同

11.png

注意这里还是要将就一下实操,因为你的目录结构很有可能和我的不同,导致截图给你的冲击力不是很大,我第一次找到 vue-cli 启动后浏览器的源码位置后还是有点激动的,至于为什么是在 webpack://./ 位置和 webpack 自己的原理有关,这里不多讲,注意,截图来源于 vue-cli 启动的项目

还有一个问题是,为什么有 info.vue?xxxx 这么多文件呢?(info.vue 是本篇文章调试的 vue 文件), 我大概看了一下里面的内容,是一些创建 DOM, render 的一写函数,所以我推测是 vue-loader 去分析源文件产生的一些附加的文件,这里也科普一下 loader, webpack 一开始是只处理 JS 的,像 vue, css 这种无法识别,需要加一个 loader 去分析,然后转化为 webpack 认识的代码,可以理解为中间解析器,那么这个目录结构上来看应该是 vue-loader 对源文件进行了一个解析后拆分

下面是一张 info.vue?xxxx 相关的图

10.png

快速找到源文件

这算是我偶然间发现的一个小技巧,能够快速找到需要调试的 vue 文件,就是利用 Chrome devtools 的 Open file, 就是在下面这个位置

12.png

不过不知道也没关系,因为它有一个快捷键 Ctrl + P, 调出来对话框后,输入文件名就可以快速找到需要调试的文件,不需要去 webpack 里面一个个的点开文件夹,如果你的目录结构很复杂的话,找到你需要调试的文件也需要好一段时间,所以用快捷键何乐而不为呢?实操如下

6.gif

有些家人们可能发现了你怎么能够直接找到源文件的呢?是不是提前看过?其实不是,是因为输入关键字.vue 后,最下面那个文件就是保存 <scirpt></script> 相关的文件,就是 JS 相关的,通常这部分内容和我们源文件中的是一模一样,因为本身就能够被 webpack 识别,不需要转译,而且这部分内容也往往是我们需要调试的部分,JS 源文件位置如下

13.png

小结

优点

  1. 具有上面 debugger 方法全部的优点,但是又解决它的缺点

缺点

  1. Chrome 直接打断点调试也有自己的缺点,比如断点不明确的问题,可能打一个出现五六个奇怪的位置,建议和 debugger 互补使用
相关文章
|
5天前
|
JavaScript 前端开发
如何在 Vue 项目中配置 Tree Shaking?
通过以上针对 Webpack 或 Rollup 的配置方法,就可以在 Vue 项目中有效地启用 Tree Shaking,从而优化项目的打包体积,提高项目的性能和加载速度。在实际配置过程中,需要根据项目的具体情况和需求,对配置进行适当的调整和优化。
|
5天前
|
存储 缓存 JavaScript
在 Vue 中使用 computed 和 watch 时,性能问题探讨
本文探讨了在 Vue.js 中使用 computed 计算属性和 watch 监听器时可能遇到的性能问题,并提供了优化建议,帮助开发者提高应用性能。
|
5天前
|
存储 缓存 JavaScript
如何在大型 Vue 应用中有效地管理计算属性和侦听器
在大型 Vue 应用中,合理管理计算属性和侦听器是优化性能和维护性的关键。本文介绍了如何通过模块化、状态管理和避免冗余计算等方法,有效提升应用的响应性和可维护性。
|
5天前
|
存储 缓存 JavaScript
Vue 中 computed 和 watch 的差异
Vue 中的 `computed` 和 `watch` 都用于处理数据变化,但使用场景不同。`computed` 用于计算属性,依赖于其他数据自动更新;`watch` 用于监听数据变化,执行异步或复杂操作。
|
4天前
|
JavaScript 前端开发 UED
vue学习第二章
欢迎来到我的博客!我是一名自学了2年半前端的大一学生,熟悉JavaScript与Vue,目前正在向全栈方向发展。如果你从我的博客中有所收获,欢迎关注我,我将持续更新更多优质文章。你的支持是我最大的动力!🎉🎉🎉
|
6天前
|
存储 JavaScript 开发者
Vue 组件间通信的最佳实践
本文总结了 Vue.js 中组件间通信的多种方法,包括 props、事件、Vuex 状态管理等,帮助开发者选择最适合项目需求的通信方式,提高开发效率和代码可维护性。
|
4天前
|
JavaScript 前端开发 开发者
vue学习第一章
欢迎来到我的博客!我是瑞雨溪,一名热爱JavaScript和Vue的大一学生。自学前端2年半,熟悉JavaScript与Vue,正向全栈方向发展。博客内容涵盖Vue基础、列表展示及计数器案例等,希望能对你有所帮助。关注我,持续更新中!🎉🎉🎉
|
6天前
|
存储 JavaScript
Vue 组件间如何通信
Vue组件间通信是指在Vue应用中,不同组件之间传递数据和事件的方法。常用的方式有:props、自定义事件、$emit、$attrs、$refs、provide/inject、Vuex等。掌握这些方法可以实现父子组件、兄弟组件及跨级组件间的高效通信。
|
11天前
|
存储 JavaScript
Vue 状态管理工具vuex
Vue 状态管理工具vuex
|
JavaScript 测试技术 容器
Vue2+VueRouter2+webpack 构建项目
1). 安装Node环境和npm包管理工具 检测版本 node -v npm -v 图1.png 2). 安装vue-cli(vue脚手架) npm install -g vue-cli --registry=https://registry.
1050 0