Chrome DevTools 介绍

1,268 阅读5分钟

Chrome DevTools 介绍

Web前端开发过程中必然会用到Chrome浏览器自带的开发者工具Chrome DevTools,使用它作为Web前端开发性能调试的必备工具。

Elements

  1. 选取DOM节点
  2. 修改节点的样式、属性、状态,甚至整个节点html
  3. 节点操作:隐藏、删除、拷贝
  4. 断点:子节点修改、属性修改、节点移除

Console

最最最简单的、常用的:console.log()。其实,它可以执行常见任务,例如选择DOM元素,触发事件,监视事件,在DOM中添加和删除元素等,用法类似jQuery。

1. 选择器

  • $(selector, [startNode]):单选择器,document.querySelector的简写

  • (selector,[startNode]):全选择器,`document.querySelectorAll`的简写,返回一个数组
  • log

log方法里第一个参数是带有特别标识符的字符串的话,控制台会根据不同的标识符来把后面的参数填充到前面的字符串中去。常见的标识符有以下:

  • %s 表示输出字符串
  • %d 表示输出数字(也可以用%i)
  • %f 表示输出浮点数值
  • %o 表示输出Dom元素
  • %O 表示输出JavaScript对象

但是,模板字符串(Template String) console.log(${a}) 基本上可以满足以上

  • %c 表示对输出的文字应用特殊的样式

console.log("%chahhahahahhahah", "color:red;font-size:16px;") (彩色的输出语句貌似看起来中看不中用,其实不然。大型的web开发项目,特别是多人分模块开发的时候,控制台一大堆console.log输出,你一下子找不到你自己的模块的输出语句。如果给你自己的模块输入语句应用了不同的颜色,相对来说比较好定位到输出的地方,这是提高效率的一个小技巧。)

  • info/error/warn

基本类似,只是在代表的意义和输出的样式有所区别。

  • group

用于显示一组的控制台输出,要搭配console.groupEnd来使用。

  • time

用于显示代码执行的时间,要搭配console.timeEnd来使用。

Sources

  1. 断点调试
  2. 代码格式化

Network

image.png

  1. Record Network Log: 红色表示此时正在记录资源请求信息;
  2. Clear: 清空所有的资源请求信息;
  3. Filter: 过滤资源请求信息;
  4. Use small resource raws: 每一行显示更少的内容;
  5. Perserve Log: 再次记录请求的信息时不擦出之前的资源信息;
  6. Disable cache: 不允许缓存的话,所有资源均重新加载。

Performance

如下划分成4个区域

image.png

区域1:控制面板

  • Screenshots 截图:默认勾选,每一帧都会截图。
  • Memory 内存消耗记录:勾选后可以看到各种内存消耗曲线

高级配置(模拟手机、慢网络)

  • Disable javaScript samples 关闭javaScript样本:减少在手机运行时的开销,模拟手机运行时勾选
  • Network 网络模拟:可以模拟在3G,4G等网络条件下运行页面
  • Enable advanced paint instrumentation(slow) 记录渲染事件的细节:选择frames中的一块,可以看到区域四多了个Layers
  • CPU CPU限制:主要为了模拟低CPU下运行性能

区域2:概览面板

1. FPS

每秒帧数。衡量任何动画性能的主要指标是每秒帧数(FPS)。当动画以60 FPS运行时,页面会流畅。每当在FPS上方看到红色条形时 ,表示帧速率下降得很低,可能会损害用户体验。通常,绿色条越高,FPS越高。可以在区域三Frames中看到具体的FPS值。

image.png

2. CPU

处理各个任务花费的时间,详细信息在区域4的Summary**。**CPU图表充满色彩的事实意味着在记录过程中CPU已满。

  • Scripting 脚本
  • Rendering 渲染 ---->重排(样式计算和布局等)
  • Painting 绘制 ---->重绘(颜色等)
  • Loading 加载
  • ldle 闲置

image.png

3. NET

各个请求花费时间。有一深蓝色,一浅蓝色的横条,分别一上一下,深蓝色的网络请求优先级比较高,浅蓝色区域内的网络请求优先级比较低一般是 low 和 lowest,估计是 Idle 空闲时间发出的请求。

image.png

区域3:线程面板

1. Frames

帧线程,鼠标悬浮绿色块可以看到fps

2. Main

主线程,负责执行Javascript, 解析HTML/CSS, 完成绘制。 可以看到主线程调用栈和耗时情况,每个长条都是一个事件,悬浮可以看到耗时和事件名

  • x轴指时间 最上面的第一条就是事件触发的地方,直到结束,这条线是最长的
  • y轴指调用栈 上面的event调用了下面的子event,越到下面数量越少(瀑布)

image.png
颜色代表各个事件类型,以下列出一些常见的事件

example:

image.png

image.png

区域4:统计面板

统计面板选择因点击选择不同的目标统计的内容不同

  • Summary 统计图:展示各个事件阶段耗费的时间
  • Bottom-Up 排序:可以看到各个事件消耗时间排序

(1)self-time 指除去子事件这个事件本身消耗的时间 (2)total-time 这个事件从开始到结束消耗的时间(包含子事件)

image.png

  • Call Tree 调用栈:Main选择一个事件,可以看到整个事件的调用栈(从最顶层到最底层,而不是只有当前事件)
  • Event Log 事件日志

(1) 多了个start time,指事件在多少毫秒开始触发的 (2) 右边有事件描述信息

快捷指令面板

Devtools打开的情况下,键入cmd + shift + p将其激活,然后开始在栏中键入要查找的命令或输入"?"号以查看所有可用命令。

  • : 打开文件
  • :: 前往文件
  • @:前往标识符(函数,类名等)
  • !: 运行脚本文件
  • >;: 打开某菜单功能

1. 性能监视器:> performance monitor

将显示性能监视器以及相关信息,例如CPU,JS堆大小和DOM节点。

2. FPS实时监控性能:> FPS选择第一项

3. 截图单个元素:> screen 选择 Capture node screenhot

插件

vue

image.png

更多

developers.google.com/web/tools/c… csstriggers.com/ googlechrome.github.io/devtools-sa…