开发调试知识 | 青训营笔记

130 阅读3分钟

这是我参与「第四届青训营 」笔记创作活动的第6天 

前端Debug特点

  • 多平台(浏览器控制台、node、小程序、应用)
  • 多环境(本地、线上)
  • 多工具
  • 多技巧(console、断电、代理)

浏览器控制台

style 面板

  • 修改、查看元素样式
  • 查看元素伪类效果(右键:force state)
  • computed下面可以搜索样式,点击可以跳转到对应style面板

console面板

  • console.log 打印数据 (不同数据类型颜色不同,比如Number是蓝色,String是灰色)

  • console.table 具象化展示JSON和数组数据,不折叠

  • console.dir 通过类似文件树的方式展示对象属性

  • console.time 开始计时 测量一个javascript脚本程序执行消耗的时间

    • console.time(“循环开始时间”)
    • 传的参数与console.timeEnd(“循环开始时间”)的参数必须一致,否则输出是不会计时的
  • console.timeEnd 结束计时并立即打印所耗时间

  • console.warn 以警告的形式,打印信息

  • console.error 以错误的形式,打印信息

  • console.debug 与log一样

  • console.info 与log一样

source面板

  • 查看源代码
  • 最右边为Debug工具栏 ⭐
  • 断点调试器⭐

QQ图片20220801091927.png

断点调试

运行到断点所在行之前的代码就暂停,下面的代码不运行

先大致判断错误出现的位置,然后再通过断点精准定位

调试别人的代码,先看整体代码结构,先不看具体实现

  • 代码里想要添加断点(暂停运行)的代码前添加关键字 debugger,点击继续按钮取消暂停 QQ图片20220802201217.png

  • 控制台代码区域点击需要暂停的代码的行号设置断点

  • image.png

    • 1号按钮,继续运行到下一个断点所在的代码行之前。
    • 2号按钮,快速运行当前断点所在行的代码,到断点下一行暂停
    • 3号按钮,进入断点对应函数内部,一行一行看代码的具体执行。
  • 可以通过打印日志的方式查看变量的值

  • 可以通过鼠标悬停对应变量查看值。

  • 可以通过右侧的watch面板,输入变量名查看对应的值

  • 可以通过右侧的Breakpoints面板,查看设置了哪些断点

  • 可以通过右侧的scope面板,查看作用域(包含闭包)

  • 可以通过右侧的call stack面板,查看调用栈 QQ图片20220802202419.png

QQ图片20220802202940.png

network面板

  • 可以模拟弱网环境
  • 查看对应接口信息,检查接口是否符合预期

QQ图片20220802202940.png

application面板

  • 展示本地存储信息
  • 一键清空存储信息

performance面板

  • 查看性能信息(查看FRS指标,寻找性能瓶颈,优化代码)
  • 模拟各种性能优劣情况 QQ截图20220803084159.png 使用:先通过控制台录制页面后,可以查看具体帧信息。 查看FRS:找到渲染rendering界面,勾上Frame Rendering stats.

正常屏幕刷新率60hz,frs低于60则会丢帧,导致卡顿

QQ截图20220803084847.png 点击红色区域可以查看对应警告和源代码

QQ图片20220803085624.png

QQ图片20220803085801.png 点击优化查看优化后的效果和代码

QQ图片20220803090108.png

Lighthouse面板

先进行性能分析

QQ图片20220803090244.png 查看核心指标 QQ图片20220803090542.png

压缩后的代码如何调试

代码经过压缩和混淆或者加密之后防止被用户阅读到。

Source Map

作用:映射源码。 使用方法: webpack里配置devtool:"scource-map",打包后就有对应文件。

一般在项目上线之前把source map文件上传到监控平台,项目上线的平台没有source map

  • 英文,表示源码以及压缩代码的位置关联
  • 逗号,分隔一行代码
  • 分号,表示换行。
  • 缺陷:比源码体积大

移动端H5调试

  • 真机调试
  • 代理工具调试(charles、fiddler、spy-debugger、whistle)

代理工具调试

QQ图片20220803091019.png

node.js调试

inspector protocol + Chrome devtool

QQ图片20220803092012.png

inspector protocol + vscode

  • vscode点击运行
  • 添加配置
  • 添加断点
  • 查看变量、堆栈

前端常用调试技巧

  • 线上即时修改Overrides

QQ图片20220803092516.png

  • 运用代理解决开发阶段跨域问题
  • 使用本地source map
  • 使用mock模拟数据