Chrome DevTools

概览

信息概览

Element

元素面板
  • 第一部分:操作dom元素
    • 查看DOM
    • 选取DOM节点
    • 操作DOM节点
  • 第二部分
    • 查看界面样式
    • 修改界面样式
  • 第三部分
    • 相当于一个目录,指向指定的地方

console

基本的console使用方法

console.warn('<output>') // 用来显示警告
console.error('<output>') // 用来显示错误
console.info('<output>') // 用来显示提示信息
console.assert([Condition Expression], '<output>') // 可以在console进行打出断言的结果
console.clear()// 清空控制台的内容

console.dir([DOMElement])// 打印DOM元素
console.table([object/array]) // 以表格的形式打出对象或是数组

/**
 * 將輸出資料分群顯示
**/
console.group('<groupName>')             // 開始分群,預設展開
console.groupCollapsed('<groupName>')    // 開始分群,預設不展開
console.groupEnd()                       // 結束分群

例子:

console.warn('aijin')
console.error('aijin')
console.assert(2<3,'The condition is true') // 正确的时候不会打出后面的断言
console.assert(2>3,'The condition is false')

const data =[{name:'json',age:'11'},{name:'lucy',age:'12'},{name:'iii',age:'13'}]
console.log(data)
console.table(data)

console.log("Runoob");
console.group("RunoobLabel");
console.log("我在指定标签分组里22。");
console.log("我在指定标签分组里22。");
console.groupEnd()
console.log(7777)

/**
 * 使用 '%c' 幫輸出的內容添加樣式
**/
console.log('%c What a Cool Console', 'font-size: 32px; color: red')
console的结果
console.table的结果
设置分组的结果
添加样式的console

console的特殊用法

// 計數
console.count([String])

// 計時
console.time([String])            // 開始計時
console.timeEnd([String])         // 結束計時

console.count()每次调用,如果标签一样数字会增加 1,如果不一样则重新开始计数。

console.count("Runoob");
console.count("Runoob");
console.count("Runoob2");
count的用法

console.time()可以用来计算一个算法执行了多长的时间

console.time("Runoob");
for (i = 0; i < 100000; i++) {
  // 代码部分
}
console.timeEnd("Runoob");
算法的执行时间

Source

source的面板截图
第一部分
  • content script:主要是第三方插件和Chrome浏览器资源问件等
  • Snippets.js:,允许用户自设定JS,主要用来测试JS文件、记住调试片段、单元测试、少了功能代码编写等
console.log('Hello, Snippets!');
document.body.innerHTML = '';
var p = document.createElement('p');
p.textContent = 'Hello, Snippets!';
document.body.appendChild(p);
第二部分
  • 设置和取消断点。选择想要设置断点的js具体行,点击行号,就设置了断点,再次点击,就取消已设置的断点。
  • CTR+F快速查找匹配资源。CTR+G快速定位文件具体行。
  • “{}”表示格式化代码。
  • 紧挨{}处右侧,表示当前光标行号和列号。
第二部分
第三部分
  • F10单步执行,但当遇到方法,不进入方法,直接方法外的下一行代码
  • F11单步调试,且遇方法体,需要经过。
第三部分
  • call Stack:函数被调用的调用栈

  • Scope监视环境变量,私有变量、公有变量、全局变量等。

<html>
  <head>
    <script>
      const add1 = () => {
        let a = 1;
        let b = 2;
        console.log(alert);
      };
      add = () => {
        add1();
      };
    </script>
  </head>
  <body>
    <button onclick="add()">1111</button>
  </body>
</html>
第三部分

network

network面板的概况
停止记录网络请求
  • 点击Stop recording network log红色图标,当它变为灰色时,表示DevTools不在记录请求
清除网络请求
跨页面加载时,保留网络请求记录

当页面重载或是跳转页面的 时候,netWork面板的网络请求也是应该刷新的,想要保留跳转或是重载之前的请求可以勾选Preserve log,这个场景在登录跳转的时候十分的常见。

跨页面保留网络请求记录
页面加载时捕获屏幕截图

捕获屏幕截图可以分析在页面加载的过程中,用户在不同的时间段内看到的网页是什么样子的。
点击Capture screenshots图标开启捕获功能,当图标变为蓝色表示已开启,重载页面即可看到不同时间的屏幕截图

页面加载时捕获屏幕截图
  • 鼠标悬浮在一张图片上时,该图片四周会出现一个黄色的边框,同时,在OverviewWaterfall窗口里面也分别有一条黄色的竖线,这条黄色的竖线表示这张图片的捕获时间

  • 点击某一张图片,可以过滤掉在这张图片捕获之后发生的所有请求

  • 双击图片,可以放大该图片

禁用浏览器缓存

有些资源在状态码为304的时候,证明我们使用的是浏览器缓存的资源,为了尽可能准确的模拟我们第一次加载网页的情景,需要禁止使用浏览器的缓存,我们可以勾选下面的图标。

禁止使用缓存的请求
模拟网速条件

Network Throttling下拉框中可以选择不同的网络条件进行模拟,如2G、3G、4G、WiFi等,当想要断网的时候直接选址offline就可以

模拟网速条件

提示:有时候开发者会看到Network左侧有个警告图标,这个图标就是提示开发者当前处于模拟网络条件下。

模拟网络
手动清除浏览器缓存、cookies

在网络请求记录表里面右键,选择Clear Browser CacheClear Browser Cookies

手动清除缓存和cookie
根据属性过滤

输入框中可以输入一些字符串、域、大小、状态码、媒体类型等等可以实现过滤,也可以根据类型进行过滤

过滤属性
隐藏data URLs

data URLs指一些嵌入到文档中的小型文件,在请求表里面以data:开头的文件就是,如较为常见的svg文件。勾选Hide data URLs复选框即可隐藏此类文件。

隐藏data URLs

查看请求记录
请求列表
  • Name:文件的名字或者资源的标识符

  • StatusHTTP状态码

  • Type:请求资源的MIME类型

  • Initiator:以下对象或处理可以发起一个请求

    • ParseChromeHTML解析器

    • RedirectHTTP重定向

    • Scriptjs函数

    • Other:一些别的处理或操作,比如通过链接导航到一个页面,或者是在浏览器的地址栏输入一个地址然后回车

  • Size:响应头大小+响应体大小

  • Time:总的持续时间,从发起请求到资源下载完成

  • Waterfall:每一个请求活动的不同阶段的可视化展示

查看请求的详情
  • Preview:查看响应体的预览
  • Response:查看响应体
  • Timing:查看请求在各个阶段对应的时间
timing的详情
  • Queueing:浏览器会在以下情况对请求进行排队:

    • 有更高优先级的请求

    • 在这个域下,已经有6个TCP连接了,达到Chrome最大限制数量。此条规则仅适用在HTTP/1.0HTTP/1.1

  • StalledQueueing中的任何一个因素发生都会导致该请求被拖延

  • Request sent:请求发送消耗的时间

  • Waiting (TTFB):浏览器等待响应的时间,TTFB表示 Time To First Byte

  • Content Download:资源下载所消耗的时间

Performance

DEMO的链接 demo

模拟移动设备的CPU

有的时候移动设备的CPU一般会比台式机和笔记本差很多,当我们想要等戏界面的时候,可以用cpu控制起来模拟移动设备,具体的操作如下所示:

操作示意图

ps:其中的4xslow是:Devtools开始模拟两倍速低速CPU

设置demo并记录运行时的性能

打开上面的demo

  • 其中ADD是添加蓝色的小方块
  • 点击 Optimize按钮,你会发现蓝色小方块会变的很快而且动画变得平滑。
  • 点击 un-optimize 按钮,蓝色小方块又会变成之前的模样。

点击performace的录制按钮,我们就可以录制各种指标

录制指标

等待一会,点击stop按钮 DevTools就会停止录制并开始处理数据了:

数据详情
分析数据指标

我们从上向下看:

  • FPS:如果发现了一条很长的红色长条,那么说明这些帧存在问题,这个时候用户的体验是十分差的
  • cpu:颜色和Summery里的样式是一一对应的,cpu表格中的各种颜色代表CPU在这各种处理上花费的时间,如果某一项的占用的时间过长,那么这里就可以找到性能瓶颈线索
  • Frames图表:移动在这个上面去的,Devtools就会展现这个帧的FPS,每一个帧都可能在60以下,没有达到标准
    • 谷歌浏览器提供了中可以实时显示FPS的面板:
      • 按下 Command+Shift+P(Mac)或者 Control+Shift+P(Windows, Linux)打开命令菜单
      • 输入Rendering,点选Show Rendering
      • Rendering面板里,激活FPS MeterFPS实时面板就出现在页面的右上方。
定位瓶颈的位置
瓶颈位置

大部分的时间花费在了rending位置上,所以我们想要提高性能就要减少rendering的时间

  • 我们打开Main图标,Devtools展示了主线程的运行状况,X轴代表的是时间,每一个长条代表一个event,长条越长,代表这个event花费的时间越长,y轴代表了调用栈,在栈里面,上面的event调用了下面的event
  • 在事件长条的右上角出,如果出现了红色小三角,说明这个事件是存在问题的,需要特别注意。
  • app.update这个事件的长条下方,有很多被触发的紫色长条。如果放大这些事件长条,你会看到它们每个都带有红色小三角。点击其中一个紫色事件长条,DevtoolsSummary面板里展示了更多关于这个事件的信息。确实,这里有很多reflow的警告。
  • summary面板里点击app.js:70链接,Devtools会跳转到需要优化的代码处

应用面板

应用面板
  • 如果使用本地存储存储键值对 (KVP),则可以从Local Storage 窗格中检查、修改和删除这些KVP

  • Session Storage 窗格与Local Storage窗格,cookie的窗格的工作方式相同。

安全面板

  • Security Overview:安全页面会通过消息This page is secure (valid HTTPS). 指示。
  • 点击 View certificate 查看主源的服务器证书。 非安全页面会通过消息 This page is not secure.指示。
  • Security 面板可以区分两种非安全页面。 如果请求的页面通过 HTTP 提供,则主源会被标记为不安全。
  • 如果点击非安全源,Security 面板会提供 Network 面板过滤视图的链接。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,214评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,307评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,543评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,221评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,224评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,007评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,313评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,956评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,441评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,925评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,018评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,685评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,234评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,240评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,464评论 1 261
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,467评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,762评论 2 345

推荐阅读更多精彩内容