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

97 阅读2分钟

这是我参与「第四届青训营」笔记创作活动的的第3天,今天学习的知识主要是在前端开发中,如何去调试我们的代码,解决我们的bug所用到的一些工具和技巧。

前端Debug

特点:

  • 多平台:浏览器,hybrid,Nodejs,小程序,桌面应用等
  • 多环境:本地/线上
  • 多工具:Chrome devtools, charles,spy-debugger,whistle,vconsole
  • 多技巧:console,breakpoint,sourceMap,代理

可以做到的

Chrome devtools: 动态修改元素和样式,添加,删除等操作 伪类:

  • 右键点击元素->Force state, 选择想要调试的伪类方法
  • 右半部分选择:hover,并勾选自己想要的伪类
  • Computed:过滤查找到自己想要修改的样式
  • 右键点击元素->capture node screenshot,针对元素截屏
  • console:控制台,查看当前网页的日志,有各类函数可以查看
  • Sources:展示项目内的代码,目录树,进行断点设置,debug调试 -代码添加debugger=添加断点 ,可以将日志和断点结合起来查看数据的正确性
  • watch监视变量,断点可以随时改变
  • scope:查看作用域列表
  • call Stack 查看当前js代码的调用栈

压缩代码

  • 考虑到安全性,前端代码在上线之前往往会被压缩,只有一行,变量名也会被替换。
  • 使用SourceMap进行映射
  • 针对上线的项目,先导出SourceMap放在平台上,上传的为不含有SourceMap的混淆版本,当出现错误需要调试时,使用提前导出的SourseMap进行映射。
  • NetWork:查看接口的各种属性,检查问题在前端还是后端
  • Application:查看存储
  • performance:查看网页中各个性能消耗。
  • 页面卡顿->查找fps指标->寻找性能瓶颈->优化代码
  • 可以查找到引起缺帧的代码处,之后对其进行优化
  • Lighthouse:对WEB测试的各项核心指标进行检测
  • (LCP)Largest Contentful Paint 最大内容绘制
  • (FID)First Input Delay 首次输入延迟
  • (CLS)Cumulative Layout Shift 累计布局偏移

移动端调试

真机调试

ios和Android,都需要真实存在的机器,Android具有用数据线链接和远程调试的方法,ios需要数据线链接MAC

vConsole

  • 日志(logs) console.log|info|error
  • 网络(Network)XMLHttpRequest,Fetch, sendBeacon
  • 节点(Elment)HTML节点树
  • 存储(Storage)Cookies,LocalStorage, SessionStorage
  • 手动执行JS命令行
  • 自定义插件

使用代理工具

电脑作为代理服务器,手机通过HTTP代理连接电脑,手机上的请求都经过代理服务器 如Charles,Fiddler(windows),spy-debugger,Whistle

Nodejs调试

  • inspector protocol+Chrome devtools
  • vscode调试

常用调试技巧

  • 线上即时修改overrides,将修改保存
  • 利用代理解决前端的跨域问题(线下软件,线上配置)
  • 利用代理使用线下SourseMap
  • 利用代理Mock数据