调试技术 | 字节青训营

109 阅读3分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 8 天

这期真的干货满满

特点

  1. 多平台:浏览器、Hybrid、NodeJs、小程序、桌面应用等
  2. 多环境:本地开发环境、线上环境
  3. 多工具:Chrome devTools、Charles、Spy-Debugger、Whistle、vConsole
  4. 多技巧:Console、BreakPoint、sourceMap、代理等

PC端调试

Elements
  • 勾选类名、点击.cls、:hov换伪类
  • 输入字符串动态加减
  • computed下点击箭头可以定位到style里具体的css
Console
  • console.log、console.warn、console.error、console.debug、console.info
  • console.table:具象化的展示 JSON 和 数组数据
  • console.dir:通过类似文件树的方式展示对象的属性
  • 占位符给日志添加样式,可以突出重要的信息:
    • %s:字符串占位符,%o: 对象占位符,%c: 样式占位符,%d: 数字占位符
Sources
  • 启动:关键字debugger或代码预览区域点行号,执行到断点处暂停执行
  • Watch:点+添加对应变量监控,或暂停状态下鼠标hover代码变量可查看变量值
  • Breakpoints:查看断点列表
  • Scope:查看作用域列表,含闭包
  • Call Stack:当前js代码的调用栈
  • XHR/fetch Breakpoints:请求断点
  • 压缩后代码:可以打开sourceMap映射源码,但里面存储了源文件和映射很占内存。所以sourceMap常只用于监控,把打包出来的js.map从压缩包中删除然后上传到监控平台,webpack.prod.js中加devtool:'source-map'
Network

有可以选择cpu类型调慢网速

Application

点击左侧 Application 下的Stroage 面板中的 Clear Site Data可以清除网页的本地存储数据

Performance

录制五秒

  • 概览面板:FPS:每秒顺数、CPU: 处理各个任务花费的时间、NET:各个请求花费时间
  • 线程面板:
    • Frames顺线程;
    • Main主线程,负责执行Javascript解析HTML/Css,完成绘制;
    • Raster: Raster线程,负责完成某个layer或者某些块(tile)的绘制。
Lighthouse

有评分

  • Largest Contentful Paint (LCP) : 最大内容绘制,测量加载性能。为了提供良好的用户体验,LCP 应在页面首次开始加载后的2.5 秒内发生。
  • First Input Delay (FID) : 首次输入延迟测量交互性。为了提供良好的用户体验,页面的 FID 应为100 毫秒或更短。
  • Cumulative Layout Shift (CLS) : 累积布局偏移,测量视觉稳定性。为了提供良好的用户体验,页面的 CLS 应保持在 0.1.或更少

移动端

  1. 真机调试(USB)
  2. vconsole
  3. 代理工具(如charles、fiddler、spy-debugger、whistle):电脑作为代理服务器,手机通过http代理连到电脑

Nodejs调试

  • node --inspect=8888 index.js运行,再在浏览器访问服务,点node图标打开或打开chrome://inspect/#devices
  • 在vscode调试

调试技巧

  1. Override
  2. 打开 Sources面板下的的Overrides
  3. 点击 Select folders for Overrides,选择一个本地的空文件夹目录。
  4. 允许授权
  5. 在 page 中修改代码,修改完成后 command +s 保存
  6. 打开 devTools ,点击右上角的三个小点-> More tools ->Changes,就能看到所有修改了
  7. 代理服务器,解决跨域
  8. 线上不存在 Source Map 时可以使用 Map Local 网络映射功能来访问本地的 SourceMap 文件。
  9. 使用Mock数据
  10. 右键选中要 mock 数据的接口,选save response保存文件到本地
  11. 本地打开保存的文件,编辑想mock 的数据并保存。
  12. 右键选中第一步的接口,选择Map Local,Local Path 选择第二步的文件。
  13. 小黄鸭法!