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

53 阅读3分钟

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

前端Debug的特点

  1. 多平台

    浏览器、Hybrid、Node.js、小程序、桌面应用等

  2. 多环境

    本地开发环境、线上环境

  3. 多工具

    Chrome devTools、Charles、Spy-Debugger、Whistle、vConsole……

  4. 多技巧

    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:数字占位符

Source Tab

image.png

断点调试(Watch和Breakpoints)

  1. 在想要的地方的代码加debugger

  2. 执行到端点处时暂停代码执行

  3. 展开Breakpoints列表可以查看断点列表,勾选/取消可以激活/禁用对应断点

  4. 暂停状态下,鼠标hover变量可以查看变量的值

  5. 在调试器Watch右键点击+可以添加对变量的监控,查看该变量的值

Scope与Call Stack

  • 展开Scope可以查看作用域列表(包含闭包)

  • 展开Call Stack可以查看当前javaScript代码的调用栈

压缩后的代码如何调试?

Source Map

mappings字段存储了源文件和Source Map的映射

特点

  • 英文:表示源码及压缩代码位置关联。

  • 逗号:分割一行代码中的内容。

  • 分号:代表换行。

image.png

image.png

代码上线上传不带Source Map的产物,Source Map上传到监控平台

NetWork

Network 网络面板主要用来确认资源下载情况以及查看资源的属性信息网络上的请求都是对资源的请求,CSS、JS以及HTML页面等。

Network面板主要分为6部分(如下图):

区域1:控制面板

区域2:过滤面板

区域3:概览区域

区域4:Request Table面板

区域5:总结面板

区域6:请求详情面板

image.png

Appliaction面板展示与本地存储相关的信息

  • local Storage(本地存储)

  • Session Storage(会话存储)

  • IndexedDB

  • Web SQL

  • Cookie

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

Performance

Performance面板主要分为4部分(如下图):

image.png

区域1:控制面板

区域2:概览面板(FPS:每秒帧数)、(CPU:处理各个任务花费的时间)、(NET:各个请求花费时间)

区域3:线程面板(Frames:帧线程)、(Main:主线程、负责执行Javascript,解析HTML/CSS,完全绘制)、(Raster:Raster线程,负责完成某个layer或者某些块的绘制)

区域4:统计面板

image.png

Lighthouse

Lighthouse是网页性能分析工具。Web核心指标:

  • LCP(largest Contentful Paint):最大内容绘制,测量加载性能。为了提供良好的用户体验,LCP应在页面首次开始加载后的2.5内发生。

  • FID(First Input Delay):首次输入延迟,测量交互性。为了提供良好的用户体验,页面的FID应为100毫秒或更短。

  • CLS(Cumulative Layout Shift):累积布局偏移,测量视觉稳定性。为了提供良好的用户体验,页面的CLS应保持在0.1或更少。

如下图:

image.png