前端必须知道的开发调试知识 | 青训营笔记

80 阅读3分钟

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

1. Bug与Debug

前端Debug的特点

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

2. Chrome DevTools

Elements

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

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

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

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

  • Computed下点击样式里的箭头可以跳转到styles面板中的css规则

  • 激活伪类的方法:

    • 选中具有伪类的元素点击:hov
    • DOM树右键菜单,选择Force state

Console

console.log 输出的值的类型不同,颜色会不同

console.warn

console.error

console.debug

console.info

console.table() 具象化展示JSON和数组

console.dir() 通过类似文件树展开对象的属性

console.time()

Source

image.png

  • 程序暂停的方式:

    • 程序中写入debugger
    • 在浏览器Sources页面的相对应行数单击,改行前面出现蓝色箭头框
  • Breakpoints列表查看断点列表

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

  • Watch可以添加对变量的监控,查看变量的值

  • Scope可以查看作用域列表

  • Call Stack可以查看当前JavaScript代码的调用栈

压缩后的代码如何调试?

使用Source Map 可以将压缩之后的代码与源码进行映射,代码上线时是不带SourceMap的,SourceMap被上传到监控平台,在代码上线出现问题的时候能够提供错误位置。

image.png

Network

image.png

Application

展示本地存储相关的信息:

  • Local Storage
  • Session Storage
  • IndexedDB
  • Web SQL
  • Cookie

Performance

image.png

LightHouse

衡量站点性能

核心Web指标:

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

image.png

2. 移动端H5调试

真机调试

image.png

VConsole

  • 日志(Logs): console.log..
  • 网络(Network): XMLHttpRequest,Fetch, sendBeacon
  • 节点(Element):HTML节点树
  • 存储(Storage): Cookies,LocalStorage,SessionStorage
  • 手动执行JS命令行
  • 自定义插件

使用代理工具调试

  • Charles 适合查看、控制网络请求、分析数据
  • Fiddler 与Charles类似,适合windows平台
  • spy-debugger 远程调试手机页面,抓包
  • Whistle 基于Node实现的跨平台Web调试代理工具

3. Nodejs调试

Inspector Protocol + Chrome Devtool

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

Inspector Protocol + VS code

在VSCode中点击运行,添加配置,启动调试,添加断点,查看变量和堆栈

image.png

常用开发调试技巧

线上即时修改Overrides

  • 打开Source面板下的Overrides
  • 选择一个本地的空文件夹目录
  • 允许授权
  • 在page中修改代码,修改完成后Ctrl+S保存
  • 打开devTools,点击右上角三点->More tools-> Changes,就能看到所有修改

利用代理解决开发阶段的跨域问题

image.png

启用本地source map

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

使用代理工具Mock数据

image.png