前端开发调试 | 青训营笔记

76 阅读3分钟

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

07 前端开发调试

前端开发Debug的特点:

  • 多平台:浏览器、Hybrid、NodeJs、小程序、桌面应用等
  • 多环境:本地开发环境、线上环境
  • 多工具:Chrome devTools、Charles、Spy-Debugger、Whistle...
  • 多技巧:Console、BreakPoint、sourceMap、代理等

Chrome devTools

Elements

image.png

  • 点击.cls开启动态修改元素的class

  • 输入字符串可以动态的给元素添加类名

  • 勾选/取消类名可以动态查看类名生效效果

  • 点击具体的样式值可以进行编辑,浏览器内容区域实时预览

  • 激活伪类的方法:

    • 选中具有伪类的元素点击:hov
    • DOM树右键菜单,选择Force state
  • Computed下点击样式里的箭头可以跳转到styles面板中的css规则

Console
console.log('Hi')
console.warn('Warn')
console.error('Error')
console.debug('debug')
console.info('info')
//占位符:给日志添加样式,可以突出重要信息。%s 字符串占位符;%o对象占位符;%c样式占位符;%d数字占位符
console.log('%s %o,%c%s','hello',{name:'tom',age:18},'font-size:24px;color:red','Welcome to BD')
console.table(arr)   //具象化地展示JSON和数组数据
console.dir(box1)  //通过类似文件树的方式展示对象的属性
Source
  • source可以看到页面的HTML、CSS、JS等代码

  • 在程序中加入debugger关键词可以设置断点,当程序运行到断点时会暂停运行

  • 也可以在source中的代码里左侧行号处标记以添加断点

  • 在source的代码中,将鼠标悬停在变量上可以查看变量的值。

  • 也可以在source页面右侧的Watch栏手动添加要观测的变量

  • Breakpoints栏可以临时操控断点

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

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

  • XHR Breakpoint 可以记录发生网络请求时断点的状态

  • DOM Breakpoints 可以查看当HTML中某一个元素发生变化时断点的状态

  • 压缩后的代码如何调试?

    使用Source Map 可以将压缩之后的代码与源码进行映射,而为了安全和节省体积,代码上线时是不带SourceMap的,SourceMap则被上传到监控平台

image.png

Network

监控浏览器向服务端请求的资源

  • No throttling可以模拟弱网环境
  • 可以点击具体某一项资源查看其相关信息

image.png

Application

存储相关

Performance

image.png

从上到下依次为:控制面板、概览面板、线程面板、统计面板

用于分析性能问题

页面卡顿 -> 查看FPS指标 -> 寻找性能瓶颈 -> 性能优化

LightHouse

衡量站点性能

核心Web指标:

  • LCP:最大内容绘制,测量加载性能。为了提供良好的用户体验,LCP应在页面首次开始加载后的2.5秒内发生。
  • FID:首次输入延迟,测量交互性。为了提供良好的用户体验,页面的FID应为100毫秒或更短。
  • CLS:累计布局偏移,测量视觉稳定性。为了提供良好的用户体验,页面的CLS应保持在0.1或更少。

移动端H5调试

真机调试
VConsole
使用代理工具调试
  • 常用代理工具:Charles、Spy-Debugger

NodeJs调试

Inspector Protocol + Chrome Devtool
  1. 执行命令 node --inspect=8888 index.js
  2. chrome浏览器访问服务
  3. 点击绿色node图标打开node调试面板
  4. 在node调试面板中使用断点调试

常用开发调试技巧

线上即时修改Overrides
  1. 打开Source面板下的Overrides
  2. 选择一个本地的空文件夹目录
  3. 允许授权
  4. 在page中修改代码,修改完成后Ctrl+S保存
  5. 打开devTools,点击右上角三点->More tools-> Changes,就能看到所有修改
利用代理解决开发阶段的跨域问题

image.png

启用本地SourceMap

线上不存在SourceMap时可以使用Map Local网络映射功能来访问本地的SourceMap文件

使用代理工具Mock数据