前端调试必会知识|青训营笔记

110 阅读4分钟

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

前言

调试是项目开发中非常重要的环节。掌握一些调试技巧,不仅能帮助我们定位到问题,还能提升我们的开发效率,部分演示图是Edge上的,我觉得大差不差

Chrome Devtools

Chrome 开发者工具 (Chrome DevTools) 是一套内置于 Google Chrome 中的 Web 开发和调试工具,可用来对网站进行迭代、调试和分析。

怎么打开Dev tools? 可以右击-->检查 , 也可以使用快捷键:F12

1、动态修改元素和 样式

Elements 也就是元素样式调试 image.png 通过检查我们可以在浏览器里找到需要调试的内容,并进行改动,也可以在要调试的方块上直接右击检查,并调试 因为我用的浏览器是Edge所以是中文,大同小异,一通则通

image.png

比如把方块一的背景划掉:

image.png

亦可以处添加一个新类名:

image.png

伪类或者说状态不同的怎么调试呢?在要调试的地方右键即可~

image.png

怎么样,是不是感觉很简单,如果项目较大,类名较多,还可以搜索,等等等, 就不过多介绍

2、Console

字面意思可以知道他是一个控制台 image.png 它可以打字,展示日志,等等.比如:

console.log
console.warn
console.error
console.debug
console.info

image.png 还可以给日志添加样式,可以突出重要的信息 %S:字符串占位符; %0: 对象占位符; %C:样式占位符, %d:数字占 位符

日志左侧有分类

image.png

不同类型的值在日志里输出的颜色不一样

image.png

console.table 具像化的展示JSON和数组数据 image.png console.dir 通过类似文件树的方式展示对象的属性

image.png

3、Sorce Tab

image.png 可以使用debugger 或使用断点让代码运行到该处暂停,经过排查就会比较容易发现代码的问题出现的位置,并解决掉它~

debugger: image.png 断点: image.png

3.1、Break point与Watch

可以把鼠标移到需要观测的值上直接观测

image.png

也可以在区域4的watch里输入要观测的值 image.png

显示断点

image.png

3.2、Scope 与 Call Stack

image.png 展开Scope可以查看作用域列表包含闭包

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

3.3、压缩代码调试

前端代码天生具有“开源"属性,出于安全考虑, 上线之前JavaScript代码通常会被压缩,压缩后的代码只有一行,变量使用'a'、 'b' 等替换,整体变得不可阅读。 image.png

3.4、Source Map

我们线上的代码一般都是经过打包的,如果线上代码报错了,基本无法调试,所以这个时候, Source Map 的作用就来了, Webpack 构建代码中,开启 Source Map需要注意的是:Source Map 并不是 Webpack 特有的,其他打包工具同样支持 Source Map ,打包工具只是将 Source Map 这项技术通过配置化的方式引入进来,各种主流前端任务管理工具,打包工具都支持生成 Source Map 。 image.png

然后重新执行构建,再次打开浏览器就可以成功定位到具体的报错位置了

4、NetWork

大致布局 image.png

network-3.png 表示正常记录网络的请求状况,点击,当图标变成 img 时,代表停止记录请求状况,此时页面上不会对后续请求进行记录(保留点击前的记录)。

其中可以在过滤面板的Fetch/XHR里查看各种接口请求与对应的返回结果,等 image.png

  • Headers(标头)选项卡可以检查HTTP标头
  • Perview(预览)选项卡可以预览这个资源,比如图片什么的
  • Response(响应)选项卡也是就是基于本资源请求后,服务器的响应 image.png

还可以模拟低网络下的加载情况

image.png

点击右侧设置图标后会出现几个选项 image-20210611171729978

5、Performance

image.png

  • 区域1:控制面板
  • 区域2:概览面板
    • FPS:每秒帧数
    • CPU:处理各个任务花费的时间
    • NET:各个请求花费时间
  • 区域3:线程面板
    • Frames:帧线程
    • Main:主线程,负责执行Javascripl,
    • 解析HTML/CSS,完成绘制
    • Raster: Raster线程, 负责完成某个e'zlayer或者某些块(ile)的绘制。
  • 区域4:
    • 统计面板

Performance较为复杂,就不过多讲解

6、Lighthouse

Lighthouse 和Performance也是与性能有关,不过相对简单,开始分析后会有相应分数,以及一些优化建议 image.png

性能有核心web指标,如下图 image.png

总结

这次大致讲了前端的浏览器调试,如何运用调试工具去帮助我们查找bug,优化,等等。对什么是前端调试有,为啥要调试有了认识