这是我参与「第四届青训营 」笔记创作活动的第8天
课堂内容
一、Bug与Debug
1.Bug的产生
2.前端Debug的特点
- 多平台:浏览器、Hybrid、Nodejs、小程序、桌面应用
- 多环境:本地开发环境、线上环境
- 多工具:Chrome devTools、Charles(抓包工具)、Whistle、vConsole
- 多技巧:Console、BreakPoint、sourceMap、代理
二、Chrome devTools
1.Elements
动态修改元素和样式
- 点击.cls开启动态修改元素的class
- 输入字符串可以动态的给元素添加类名
- 勾选/取消类名可以动态的查看类名生效效果点击具体的样式值(字号、颜色、宽度高度等)可以进行编辑,浏览器内容区域实时预览
- Computed下点击样式里的箭头可以跳转到 styles面板中的css规则
可以使用以下两种方式强制激活伪类
- 选中具有伪类的元素,点击:hov
- DOM树右键菜单,选择Force State
2.Consloe
- console.log
- console.warn
- console.error
- console.debug
- console.info
- console.table :
- 具象化展示JSON和数组数据
- console.dir:
- 通过类似文件树的方式展示对象的属性
- 占位符:给日志增加样式,可以突出重要的信息
- %s:字符串占位符
- %o:对象占位符
- %c:样式占位符
- %d:数字占位符
3.Source
- 区域1:页面资源文件目录树
- 区域2︰代码预览区域
- 区域3: Debug 工具栏,从左到右依次为
- 暂停(继续)
- 单步跳过
- 进入函数
- 跳出函数
- 单步执行
- 激活(关闭)所有断点
- 代码执行异常处自动
- 区域4:断点调试器
4.NetWork
- 区域1:控制面板
- 区域2:过滤面板
- 区域3:概览区域
- 区域4:Request Table面板
- 区域5:总结面板
- 区域6:请求详情面板
5.Application
Application面板展示与本地存储相关的信息
- Local Storage
- Session Storage
- IndexedDB
- Web SQL
- Cookie
6.Performation
- 区域1:控制面板
- 区域2:概览面板
- FPS:每秒帧数
- CPU:处理各个任务花费的时间
- NET:各个请求花费时间
- 区域3∶线程面板
- Frames:帧线程
- Main:主线程,负责执行Javascript,解析HTML/CSS,完成绘制
- Raster: Raster线程,负责完成某个layer或者某些块(tile)的绘制。
- 区域4:统计面板
7.Lighthouse
- Largest Contentful Paint (LCP)
- 最大内容绘制,测量加载性能。为了提供良好的用户体验,LCP应在页面首次开始加载后的2.5秒内发生。
- First Input Delay (FID)
- 首次输入延迟,测量交互性。为了提供良好的用户体验,页面的FID应为100毫秒或更短。
- Cumulative Layout Shift (CLS)
- 累积布局偏移,测量视觉隐定性。为了提供良好的用户体验,页面的CLS应保持在0.1.或更少。
三、移动端H5调试
1.真机调试
-
iOS
- 使用Lightning 数据线将iPhone与 Mac相连
- iPhone开启Web检查器(设置-->Safari-->高级-->开启Web检查器)
- iPhone使用Safari浏览器打开要调试的页面
- Mac打开Safari浏览器调试(菜单栏>开发> iPhone设备名>选择调试页面)
- 在弹出的Safari Developer Tools中调试
-
Android
- 使用USB数据线将于机与电脑相连
- 手机进入开发者模式,勾选USB调试,并允许调试
- 电脑打开Chrome浏览器,在地址栏输入: chrome://inspect/#devices并勾选 Discover USBdevices选项
- 手机允许远程调试,并访问调试页面
- 电脑点击inspect 按钮
- 6.进入调试界面
2.VConsole
- 日志(Logs): console.log,info,error
- 网络(Network): XMLHttpRequest,Fetch, sendBeacon
- 节点(Element): HTMIL 节点树
- 存储(Storage): Cookies,LocalStorage,SessionStorage
- 手动执行JS命令行
- 自定义插件
3.使用代理工具调试
原理: 用电脑作为代理服务器,手机通过HTTP代理连接到电脑,这时手机上的请求都会经过代理服务器。
常用的代理工具:
四、Nodejs调试
1.Inspector Protocol + Chrome Devtool
- 执行命令 node —inspect=8888 index.js
- chrome浏览器访问服务
- 点击绿色node图标打开node 调试面板(在 chrome:/linspect/#devices 中配置network target)
- 在node调试面板中使用断点调试
2.Inspector Protocol + VSCode
- VS Code点击运行
- 添加配置
- 启动调试
- 添加断点
- 查看变量、堆栈
五、常用开发调试技巧
1.线上即时修改Overrides
-
在Sources里面的Overrides
-
点击Select folders for Overrides,选择一个本地的空文件目录
-
允许授权
-
在page中修改代码,修改完成后保存
-
打开devTools,点击右上角的三个小点 -> More tools -> Changes,就能看到所有修改
2.利用代理解决开发阶段的跨域问题
3.启用本地source map
线上不存在Source Map时可以使用Map Local网络映射功能来访问本地的Source Map文件。
4.使用代理工具mock数据
- 右键选中要mock数据的接口,选择save response,保存文件到本地。
- 本地打开保存的文件,编辑想mock的数据并保存。
- 右键选中第一步的接口,选择Map Local,Local Path选择第二步的文件。
以上就是我总结的第八节课的内容了,内容有疏漏还请见谅,有错误还请指正。今天的内容很实用啊,希望我们一起进步,顺利结营!