这是我参与「第四届青训营」笔记创作活动的的第9天
本堂课重点内容
- Chrome DevTools
详细知识点介绍
Bug 与 Debug
前端 Debug 的特点
-
多平台
- 浏览器、Hybrid、NodeJS、小程序、桌面应用等
-
多环境
- 本地开发环境、线上环境
-
多工具
- Chrome devTools、Charles、Spy-Debugger、Whistle、vConsole ...
-
多技巧
- Console、Breakpoint、sourceMap、代理等
Chrome DevTools
Elements
动态修改元素和样式
-
点击 .cls 开启动态修改元素的 class
-
输入字符串可以动态的给元素添加类名
-
勾选/取消类名可以动态的查看类名生效效果
-
点击具体的样式值(字号、颜色、宽度高度等)可以进行编辑,浏览器内容区域实时预览
-
Computed 下点击样式里的箭头可以跳转到 styles 面板中的 css 规则
-
可以用以下2种方法强制激活伪类
-
选中具有伪类的元素,点击 :hov
-
DOM 树右键菜单,选择 Force State
-
Console
-
console.log
-
console.warn
-
console.error
-
console.debug
-
console.info
-
console.table
具像化的展示 JSON 和 数组数据
-
console.dir
通过类似文件树的右式展示对象的属性
-
占位符
给日志添加样式,可以突出重要的信息
-
%s:字符串占位符
-
%o:对象占位符
-
%c:样式占位符
-
%d:数字占位符
-
Sorce Tab
-
页面资源文件目录树
-
代码预览区域
-
Debug 工具栏
-
暂停(继续)
-
单步跳过
-
进入函数
-
跳出函数
-
单步执行
-
激活(关闭)所有断点
-
代码执行异常处自动
-
-
断点调试器
-
展开 Scope 可以查看作用域列表〈包含闭包)
-
展开 Call Stack 可以查看当前 javaScript 代码的调用栈
压缩后的代码如何调试
前端代码天生具有“开源"属性,出于安全考虑,上线之前 JavaScript 代码通常会被压缩,压缩后的代码只有一行,变量使用'a'、b'等替换,整体变得不可阅读。那么压缩后的代码如何调试呢?
-
Source Map
mappings 字段存储了源文件和 Souroe Map 的映射
-
英文,表示源码及压缩代码的位置关联
-
逗号,分隔一行代码中的内容
-
分号,代表换行
-
Network
-
控制面板
-
过滤面板
-
概览区域
-
Request Table 面板
-
总结面板
-
请求详情面板
Application
Application 面板展示与本地存储相关的信息
-
Local Storage
-
Session Storage
-
IndexedDB
-
Web SQL
-
Cookie
点击左侧 Application 下的 Stroage 面板中的 Clear Site Data 可以清楚网页的本地存储数据
Performance
-
控制面板
-
概述面板
-
FPS:每秒帧数
-
CPU:处理各个任务花费的时间
-
NET:各个请求花费时间
-
-
线程面板
-
Frames:帧线程
-
Main:主线程,扶着执行 Javascript ,解析 HTML/CSS 完成绘制
-
Raster:Raster 线程,负责完成某个 layer 或者某些块(tile)的绘制
-
-
统计面板
Lighthouse
核心 Web指标
-
Largest Contentful Paint (LCP)∶最大内容绘制,测量加载性能。为了提供良好的用户体验,LCP 应在页面首次开始加载后的2.5秒内发生
-
First Input Delay (FD):首次输入延迟,测量交互性。为了提供良好的用户体验,页面的 FID 应为100毫秒或更短
-
Cumulative Layout Shift (CLS):累积布局偏移,测量视觉稳定性。为了提供良好的用户体验,页面的CLS应保持在0.1.或更少
移动端 H5 调试
真机调试
IOS:
-
使用 Lightning 数据线将 iPhone与 Mac 相连
-
iPhone 开启 Web 检查器(设置-> Safari =>高级->开启 Web 检查器)
-
iPhone使用 Safari 浏览器打开要调试的页面
-
Mac 打开 Safari 浏览器调试〈菜单栏一>开发 iPhone 设备名->选择调试页面)
-
在弹出的 Safari Developer Tools 中调试
Android
-
使用 USB 数据线将手机与电脑相连
-
手机进入开发者模式,勾选 USB 调试,并允许调试
-
电脑打开Chrome浏览器,在地址栏输入︰ chrome://inspect/#devices 并勾选 Discover USB devices 选项
-
手机允许远程调试,并访问调试页面
-
电脑点击inspect 按钮
-
进入调试界面
VConsole
-
日志(Logs):console.log|info|error|..
-
网络(Network):XMLHttpRequest,Fetch, sendBeacon
-
节点(Element)::HTML 节点树
-
存储(Storage): Cookies,LocalStorage, SessionStorage
-
手动执行 JS 命令行
-
自定义插件
使用代理工具调试
原理:
-
电脑作为代理服务器
-
手机通过 HTTP 代理连接到电脑
-
手机上的请求都经过代理服务器
常用代理工具:
Charles、Fiddler、spy-debugger、Whistle
常用开发调试技巧
线上及时修改 Overrides
-
打开 Sources 面板下的 Overrides
-
点击 Select folders for Overrides。选择一个本地的空文件夹目录
-
允许授权
-
在 page 中修改代码,修改完成后 command + s 保存
-
打开 devTools,点击右上角的三个小点 -> More tools -> Changes,就能看到所有修改了
利用代理解决开发阶段的跨域问题
启用本地 source map
线上不存在 Source Map 时可以使用 Map Local 网络映射功能来访问本地的 Source Map 文件。
课后个人总结
这节课老师为我们讲解了作为一个前端工程师,在开发、网络、浏览器、手机、 PC等方面当我们遇到 bug,如何通过调试工具找到并处理这些 bug。同时还教会了我们使用Chrome Devtools,它是我们前端会经常使用的工具,学习更多的小窍门也很有意义。
引用参考
第四届字节跳动青训营「前端必须知道的开发调试知识」课程