Skip to content
On this page

前端调试通关秘籍

掘金小册

什么是调试

代码在某个平台运行,把运行时的状态通过某种方式暴漏出来,传递给开发工具做 UI 的展示和交互,辅助开发者排查问题、梳理流程、了解代码运行状态等,这个就是调试

Chrome DevTools 原理

Chrome DevTools

调试工具的四要素:frontend、background、调试协议、信道

VSCode debugger 配置

属性说明
type调试类型,一般为 node
name调试配置名称
port调试端口
request请求类型,launch/attach
userDataDir调试程序的用户数据目录
runtimeExecutable调试程序的可执行文件
runtimeArgs调试程序的可执行文件的参数
sourceMaps是否启用 sourceMaps
file调试的文件
program调试的程序入口
args调试程序的参数
cwd调试程序的工作目录
env调试程序的环境变量
protocol调试协议,一般为 inspector
console调试控制台,一般为 internalConsole
internalConsoleOptions调试控制台的配置
stopOnEntry是否在入口处停止
trace是否启用 trace
traceResponse是否启用 traceResponse
timeout调试超时时间
preLaunchTask调试前执行的任务
postDebugTask调试后执行的任务

sourcemap

属性说明
versionsourcemap 版本号,目前为 3
file编译后的文件名
sourceRoot源码根目录
names转换前的变量名
sources转换前的文件名
sourcesContent转换前的文件内容
mappings转换前的位置

作用域

属性说明
Global全局作用域
Local局部作用域,或者函数作用域
Block块级作用域
Script
Module模块作用域
CatchCatch 语句的作用域可以方位错误对象
Withwith 语句的作用域
Closure闭包作用域
Evaleval 语句的作用域

打断点的方式

方式说明
断点通过代码中的断点来打断
条件断点通过代码中的断点来打断,但是需要满足一定的条件
监视表达式通过监视表达式来打断
异常断点通过异常断点来打断
日志断点通过日志断点来打断
DOM 断点通过 DOM 断点来打断,当 DOM 节点发生变化时,会触发断点
XHR 断点通过 XHR 断点来打断,当 XHR 请求发生时,会触发断点
Fetch 断点通过 Fetch 断点来打断,当 Fetch 请求发生时,会触发断点
Event Listener 断点通过 Event Listener 断点来打断,当事件监听器被触发时,会触发断点

Performance

灰色的是浏览器的渲染线程,蓝色的是浏览器的 JS 引擎线程,黄色的是浏览器的网络线程,绿色的是浏览器的事件线程

微任务和宏任务

微任务

  1. Promise
  2. MutationObserver
  3. process.nextTick
  4. Object.observe
  5. queueMicrotask

宏任务

  1. setTimeout
  2. setInterval
  3. setImmediate
  4. requestAnimationFrame
  5. I/O
  6. UI rendering

Web vitals 网页性能指标

指标全拼说明
TTFBTime To First Byte首字节时间,即浏览器发起请求到浏览器收到响应的第一个字节的时间
FPFirst Paint首次绘制时间,即页面首次绘制的时间
FCPFirst Contentful Paint首次内容绘制时间,即首次绘制的内容,如图片、文字等,不包括背景色
LCPLargest Contentful Paint最大内容绘制时间,即页面中最大的绘制内容,如图片、文字等,不包括背景色
FMPFirst Meaningful Paint首次有意义绘制时间,即页面首次绘制的内容,如图片、文字等,不包括背景色
DCLDOM Content LoadedDOM 加载完成的时间,即 DOM 结构加载完成的时间
TTITime To Interactive首次可交互时间,即页面首次可交互的时间
FIDFirst Input Delay首次输入延迟时间,即用户第一次交互到浏览器响应的时间
TBTTotal Blocking Time阻塞总时长
CLSCumulative Layout Shift布局稳定性,即页面布局是否稳定
SISpeed Index加载速度指数,即页面加载的速度

LCP、FID、CLS 是核心指标