vue 项目调试的三种方法和不同比较

简介: 之前的一篇文章讲了两种在 vue 项目中调试的方法,一个是在项目源码中手动加入断点(debugger), 然后利用 Chrome 调试,第二种是直接在 Chrome 中打断点调试,但是需要知道怎么找到

之前的一篇文章讲了两种在 vue 项目中调试的方法,一个是在项目源码中手动加入断点(debugger), 然后利用 Chrome 调试,第二种是直接在 Chrome 中打断点调试,但是需要知道怎么找到调试文件,除了这两种方式以外 vue 还存在其他的方法去调试,比如

  1. console
  2. vscode 插件 Debugger for Chrome
  3. 以及前一篇文章介绍的 Chrome 断点调试

本篇文章就针对上面的方法做一些简单的介绍和不同

console

类似 console 这种打印信息的调试方法,几乎每种语言都有,而 JS 也是非常多人在使用,而且也很方便,需要调试的地方就去插入console类的输出语句就可以打印相关的信息,还可以根据不同类型的调试输出不同颜色,不同类型的提示,比如 console.log, console.error, console.info...我基本只用console.log, 其具体使用方式如下

function getData() {
  // ...
  const data = console.log(data); //...;
}

简单的输出你需要的信息,比如你想知道接口返回的数据是什么?有没有返回正确的数据?当发现渲染错误的时候我可能就会去打印一下,其实这种调试思路有点像黑盒测试,不用去管内部实现,就是看用户输入得到的输出是什么

黑盒测试

console 调试还有一个优点就是,打印的数据具有完整的数据结构,类似对象,数组之类的值,可以清晰的看到它的数据结构,像 JS 这种具有复杂引用的语言,可以查看它的原型链,即使是 vue 负责项目的开发中也能帮助我们进一步分析输出,这也是浏览器提供给我们的便利

15.png

当然 console 调试可以有另一种目的,就是日志记录,web 前端在这一块似乎没有太多发展,不过像后端和客户端(Andorid), 都对日志有很多要求和拓展,像我在 SpringBoot 用的很多的 log4j,在前一段时间还因为存在 BUG 影响很大,在参考一些后端 github 库的时候都是有很多日志记录的, console 可以在一些位置进行一定的输出,检测整个环境运行的情况,毕竟一个项目复杂的时候,很多 BUG 是无法复现的,更多的时候可以通过日志去找 BUG, 具体实例参考如下(可能与实际有较大出入,我前端和后端都没有和日志有过太多的了解)

2022年2月18日23点46分 -- xxx 用户登录
2022年2月18日23点46分 -- xxx 用户退出

小结

  • 优点

    • 适用场景广,简单易上手
  • 缺点

    • 需要删除部分 console 语句
    • 复杂逻辑无法调试,不适用于白盒测试

vs code 插件 Debugger for Chrome

这是同类文章经常提到的一个调试方法,因为很多人前端写代码都是用的 vscode(白嫖真香), 没有用 webStorm(没钱氪金), 这点就不像后端,基本都用 IDEA, 甚至连 Android 客户端都有 IDEA 爆改版 Android Studio(Google 大力出奇迹), 不过 vscode 还是挺好用的,像这篇文章也是在 vscode 用的 markdown 插件写的,所以回到这个调试工具 Debugger for Chrome, 它的具体使用方式如下,

16.png

17.png

这种方式是使用 vscode 提供的调试工具调试, vscode 的调试工具还是比较全面的,基本的逐行调试,查看变量值(watch) 什么的都有,而且它的使用让我感觉像是在调试 Java, 像以前 SpringBoot 就是需要重启调试,不是说随时加个断点然后就能马上停止,所以 Debugger for Chrome 的缺点就很明显了,并不能及时复现 BUG, 因为它的调试是重新打开一个 Chrome Tab 页,相当于重启,而重启以后很多调试的环境已经是不存在了,失去了调试的可能

还有一个缺点就是,并不是开箱即用,是需要一点配置的,像我之前使用的话,中间失败了好几次最后才成功,还是有点难上手操作的

小结

  • 优点

    • 能够利用 vscode 原生强大的调试工具
    • 直接在源码上打断点调试
  • 缺点

    • 需要重启环境,部分 BUG 无法复现
    • 需要配置,不是开箱即用

Chrome 中打断点调试

这是我用的比较多的调试方法,直接在 Chrome 中打断点调试,具体使用方法可以参考我之前的文章vue 项目调试你可以这样做

这种方法是基于 source-map 的,依赖于浏览器中和源码的一个映射,通过映射来找到源文件,不过我在使用中发现,我没有配置 source-map 却仍然能够在 Chrome 中找到我的源码映射,难道是我的 vue-cli 版本太高?(我的 vue-cli 版本为 4.5.15), 还有额外的一点就是 vite 也是无需配置 source-map

这里补充一下 vue-cli 和 vite 在浏览器中运行时目录结构的区别

这是 vue-cli 运行时浏览器的目录结构及源码映射位置

18.png

这是 vite 运行时浏览器的目录结构及源码映射位置

19.png

vite 要更清晰一点(所以还不赶紧上手 vite?),但是两个开发工具都可以使用 Ctrl+P 快捷键快速找到源文件

比较

  1. console 适用面更广,适用于黑盒测试场景,还可以用于日志记录,但逻辑内部错误无法调试
  2. Debugger for Chrome 适用于白盒测试,调试时需要重启,具有上手难度,但是可以用 vscode 的调试工具
  3. Chrome 中调试,利用 Chrome 原生的调试工具(Chrome 的其实更专业),内部逻辑错误也能够调试,准确定位 BUG, 开箱即用,随用随调,可以随时打断点并调试,动态调试,但是需要找到源文件
相关实践学习
通过日志服务实现云资源OSS的安全审计
本实验介绍如何通过日志服务实现云资源OSS的安全审计。
相关文章
|
5月前
|
JavaScript
Vue中如何实现兄弟组件之间的通信
在Vue中,兄弟组件可通过父组件中转、事件总线、Vuex/Pinia或provide/inject实现通信。小型项目推荐父组件中转或事件总线,大型项目建议使用Pinia等状态管理工具,确保数据流清晰可控,避免内存泄漏。
514 2
|
4月前
|
缓存 JavaScript
vue中的keep-alive问题(2)
vue中的keep-alive问题(2)
430 137
|
8月前
|
人工智能 JavaScript 算法
Vue 中 key 属性的深入解析:改变 key 导致组件销毁与重建
Vue 中 key 属性的深入解析:改变 key 导致组件销毁与重建
981 0
|
8月前
|
JavaScript UED
用组件懒加载优化Vue应用性能
用组件懒加载优化Vue应用性能
|
7月前
|
人工智能 JSON JavaScript
VTJ.PRO 首发 MasterGo 设计智能识别引擎,秒级生成 Vue 代码
VTJ.PRO发布「AI MasterGo设计稿识别引擎」,成为全球首个支持解析MasterGo原生JSON文件并自动生成Vue组件的AI工具。通过双引擎架构,实现设计到代码全流程自动化,效率提升300%,助力企业降本增效,引领“设计即生产”新时代。
569 1
|
7月前
|
JavaScript 安全
在 Vue 中,如何在回调函数中正确使用 this?
在 Vue 中,如何在回调函数中正确使用 this?
395 0
|
8月前
|
JavaScript 前端开发 UED
Vue 表情包输入组件实现代码及详细开发流程解析
这是一篇关于 Vue 表情包输入组件的使用方法与封装指南的文章。通过安装依赖、全局注册和局部使用,可以快速集成表情包功能到 Vue 项目中。文章还详细介绍了组件的封装实现、高级配置(如自定义表情列表、主题定制、动画效果和懒加载)以及完整集成示例。开发者可根据需求扩展功能,例如 GIF 搜索或自定义表情上传,提升用户体验。资源链接提供进一步学习材料。
468 1
|
JavaScript 前端开发
重读vue电商网站45之项目优化上线
重读vue电商网站45之项目优化上线
233 0
重读vue电商网站45之项目优化上线
|
JavaScript Java 物联网
现有vue项目seo优化
现有vue项目seo优化
|
10月前
|
JavaScript
vue实现任务周期cron表达式选择组件
vue实现任务周期cron表达式选择组件
1219 4