前端调试(一)---chrome devtools

151 阅读2分钟

前言

chrome浏览器带有丰富的调试工具,平常生活中小伙伴们只会使用console.log打印值来进行调试。本节我们将学习使用chrome浏览器进行调试。

创建应用

首先我们创建一个react-app,接下来的调试我们都将以react为例。

yarn create react-app react-debugger

一、用Sources进行断点调试

启动服务以后,我们打开控制台来到Source,找到react应用的入口文件。

image.png

在代码当中,我们就可以设置断点,刷新页面以后,页面就会停在我们所停住的位置。

image.png

在Scope(作用域)中,我们就可以查看当前的数据状态。

image.png

在右上方我们可以看到用于调试控制的几个按钮

他们分别是:恢复执行、单步执行、进入函数调用、跳出函数调用、让断点失效、在异常处停住。

二、用Elements进行Dom和css调试

Elements是我们经常会使用的一个面板,在这个面板我们可以直接查看元素以及它的属性和样式。我们也可以在这个面板对他们进行编辑调试。

image.png

  1. 双击元素,我们可以直接编辑元素的属性和样式名。

image.png

值得一提的是,我们可以修改元素的伪元素状态,让其保持hover或者active,从而方便我们在hover的同时查看该元素的状态、样式。

  1. 选中元素以后,右边的面板就会将该元素当前的状态展示。

image.png

在这个面板当中,我们可以十分方便的编辑该元素的样式,可以看到该元素的盒模型。

三、用console进行交互

一方面用来记录页面在执行过程中的信息(一般通过各种 console 语句来实现),另一方面用来当做 shell 窗口来执行脚本以及与页面文档、DevTools等进行交互。比如,执行node服务,就可以用console进行其devTools。

当我们不使用断点调试时,我们通常会通过控制台来打印我们所想知道的信息。下面是一些控制台相关的常用api。

1、console.log 用于输出普通信息

2、console.info 用于输出提示性信息

3、console.error 用于输出错误信息

4、console.warn 用于输出警示信息

image.png

image.png

5、console.group 输出一组信息的开头

6、console.groupEnd 结束一组输出信息

上面的两个api要结合使用。他们将信息进行分组,在我们循环打印数据的时候很好用。

  for(let i=0; i<3 ; i++) {
    console.group(`tax_${i}`)// 参数是组名,同一组会被分到一起,不写参数就是console.group
    console.log(i);
    console.log(`tax_${i}`);
    console.groupEnd();
  }

image.png

这样一来输出的数据就变得一目了然。

7、console.assert 对输入的表达式进行断言,只有表达式为false时,才输出相应的信息到控制台

  let dataA = [1,2];
  let dataB = [3,4];
  console.assert(true, ...dataA);
  console.assert(false, ...dataB);

image.png

8、console.count 统计代码被执行的次数

这个也是十分实用的api。

  for (let i=0; i<10 ; i++) {
    console.count('count');
  }

函数的参数是一个label,这个函数会统计相同label的函数被执行了几遍。

image.png

9、console.dir 直接将该DOM结点以DOM树的结构进行输出,可以详细查对象的方法等等

  let a = () => {
    return 111
  };
  console.log(a);
  console.dir(a);

image.png

10、console.time 计时开始

11、console.timeEnd 计时结束

这两个api和group、groupEnd一样需要组合使用,一般可以用来进行效率的测试。

  console.time('test');
  for(let i=0; i<10000; i++){}
  console.timeEnd('test');

image.png