Web 调试技术 | 青训营笔记

113 阅读4分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第22天,学习的是关于Web 调试技术的相关知识。

PC 端调试

Bug与Debug

Bug的产生

Bug无处不在,不可避免

DeBug的特点

  • 多平台:浏览器、小程序等
  • 多环境:本地开发环境、线上环境等
  • 多工具:Chrome devTools、Spy-Debugger等
  • 多技巧:Console、BreakPoint等

Chrome devTools

浏览器→单击右键→检查

1、Elements面板

显示和修改元素的基本结构与样式

修改路径:

hov与.cls按钮, 分别可以为元素设置伪类, 添加新类/应用/取消应用类

2、Console控制台

展示日志

  • console.log(): 打印一条普通(灰白色)日志
  • console.warn(): 打印一条警告的黄色日志
  • console.error(): 打印一条错误的红色日志
  • console.debug(): 蓝色输出
  • console.info(): 蓝色输出
  • console.table(arr): 具象化的展示JSON和数组数据
  • console.dir(obj): 用文件树的方式展示对象属性
  • 占位符:为日志添加样式

%s: 字符串占位符

%o: 对象占位符

%c: CSS占位符

%d: 数字占位符

3、Sources面板

展示项目源代码

image.png

  • 左侧区域:页面资源文件目录树
  • 中间区域:代码预览区域
  • 右上区域:DeBug工具栏
    • 暂停(继续)、单步跳过、进入函数、跳出函数、单步执行、激活(关闭)所有断点、代码执行异常处自动
  • 右下区域:断点调试器
    • Watch: 变量监视
    • Breakpoints: 管理断点
    • Scope: 查看包含闭包的作用域列表
    • Call stack: 查看当前JS代码的调用栈
    • XHR/fetch breakpoints: 可以选择在有请求发生的时候设置断点
    • DOM breakpoint: 在Element中设置, 达到条件后断开

压缩后代码的调试

由于前端代码天生具有“开源”属性,在上线之前一般会将代码进行压缩,防止自己的代码被别人阅读,压缩后的代码只有一行。

Source Map

将压缩后的代码与源码进行映射;

source Map文件的匹配模式: 在压缩后的文件末尾有//# Source MappingUrl = demo.js.map

4、Network

与请求相关

image.png

  • 区域1:控制面板
  • 区域2:过滤面板
  • 区域3:概览区域
  • 区域4:Request Table面板
  • 区域5:总结面板
  • 区域6:请求详情面板

5、Application

与展示存储相关

6、Performance面板

与网络性能相关

image.png

  • 区域1:控制面板
  • 区域2:概览面板
    • FPS:每秒帧数
    • CPU:处理各个任务花费的时刻
    • NET:各个央求花费的时刻
  • 区域3:线程面板
    • Frames:帧线程
    • Main:主线程,担任实施JavaScript,解析HTML/CSS,结束制作
    • Raster:Raster线程,担任结束某个layer或者某些块的制作
  • 区域4:统计面板

7、Lighthouse

核心web指标

  • LCP: (Largest Contentful Paint / 最大内容绘制)
  • FID:(First Input Delay/首次输入延迟)
  • CLS:(Cumulative Layout Shift/累积布局偏移)

移动端H5调试

真机调试

直接用数据线衔接设备

IOS

  1. 使用 Lightning 数据线将 iPhone与 Mac 相连
  2. iPhone 开启 Web 检查器(设置→Safari→高级→开启 Web 检查器)
  3. iPhone使用 Safari 浏览器打开要调试的页面
  4. Mac 打开 Safari 浏览器调试〈菜单栏→开发iPhone设备名→选择调试页面)
  5. 在弹出的 Safari Developer Tools 中调试

没有iPhone 设备可以在Mac AppStore安装Xcode使用其内置的iOS模拟器

Android

  1. 使用 USB 数据线将手机与电脑相连
  2. 手机进入开发者模式,勾选 USB 调试,并允许调试
  3. 电脑打开Chrome浏览器,在地址栏输入︰ chrome://inspect/#devices 并勾选 Discover USB devices 选项
  4. 手机允许远程调试,并访问调试页面
  5. 电脑点击inspect 按钮
  6. 进入调试界面

直接使用手机扫码查看,体验更佳

VConsole

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

使用代理工具调试

原理:

  1. 电脑作为代理服务器
  2. 手机通过 HTTP 代理连接到电脑
  3. 手机上的请求都经过代理服务器

以Charles为例:

  1. 安装Charles
  2. 查看电脑IP和端口
  3. 将IP、端口号填入手机HTTP代理
  4. Charles允许授权
  5. 使用SwitchHosts!软件给Mac电脑配Hosts
  6. 手机访问开发环境页面

常用代理工具:

  • Charles: 适合查看、控制网络请求,分析数据
  • Fiddler: 与Charles类似.适合windows平台
  • spy-debugger: 远程调试手机页面抓包
  • Whistle: 基于Node实现的跨平台Web调试代理工具

常用开发调试技巧

线上及时修改 Overrides

  1. 打开 Sources 面板下的 Overrides
  2. 点击 Select folders for Overrides。选择一个本地的空文件夹目录
  3. 允许授权
  4. 在 page 中修改代码,修改完成后 command + s 保存
  5. 打开 devTools,点击右上角的三个小点→More tools→Changes,就能看到所有修改内容

利用代理解决开发阶段的跨域问题

image.png

启用本地sourse map

使用代理工具Mock数据

小黄鸭调试大法