拓冰建站拓冰建站
首页 / 资讯中心 / 正文

Chrome DevTools 深度实战:从入门到性能优化排查

你要是问一个前端Chrome 开发者工具DevTools对他意味着什么有人会说是“审查元素”有人会说是“看接口请求”还有人只会打开 Console 看 console.log。回答到这个层面基本就暴露了他的段位。说实话我能理解为什么有人觉得 DevTools“会用一点就行”——毕竟日常改样式、看报错、拷接口好像已经够用。但 DevTools 对前端来说远不只是“点一下 F12 看代码”那么肤浅。它是一个完整的调试验证环境是排查线上问题的第一现场也是我和同事做技术方案时最常用的验证工具。很多时候一个页面白屏、一个样式错乱、一个接口超时以及“为什么本地好的线上不行”答案都藏在 DevTools 里。这篇文章我就从自己的实际使用经验出发把 DevTools 从快速入门到进阶排查的技巧掰开揉碎讲一遍覆盖 Elements、Console、Network、Sources、Performance、Lighthouse 这些核心面板顺带讲清楚 Vue Devtools、React Devtools 这类配套工具的安装和踩坑。适合刚入行的前端新人也适合那些用了几年 DevTools 但一直停留在 console.log 阶段的朋友。1. 为什么每个前端都得过 DevTools 这一关1.1 DevTools 到底能做什么先搞清楚它的四大能力先不急着背快捷键得先建立一个整体认知。DevTools 落在浏览器里本质上是一组调试工具的集合我习惯把它分成四个能力域第一个是“看页面”。打开一个网页页面上摆的是什么元素、它们的盒模型长什么样、背景色是哪条 CSS 定的、某个 class 是不是被另一个 class 覆盖了——这些都能在 Elements 面板里直接看。遇到线上样式问题第一件事就是对着这个按钮右键“检查”看看真实生效的规则是哪一条。第二个是“看网络”。页面加载时到底发起了多少个请求、每个请求耗时多久、是卡在 DNS 解析还是 TTFB、哪个接口返回了 500、哪个脚本阻塞了渲染——Network 面板会把这些过程全部记录下来。可以说定位前端性能问题靠 Network排查接口问题也靠 Network。第三个是“看控制台”。前端代码跑出来的日志、报错、警告都会汇总到 Console。很多人把 Console 当成“看报错的地方”但它其实还支持直接在浏览器环境里执行 JavaScript配合断点调试能做的事情非常多。第四个是“看运行时状态”。页面跑起来以后内存占用多少、有没有内存泄漏、每秒帧率是不是掉下来了、哪些任务拖慢了流畅度——Performance 和 Memory 面板就是干这个的。这类问题没有直观报错只有通过 DevTools 才能量化。把这四个能力域想清楚了你就不会再觉得 DevTools 只是“按 F12 看代码”的工具了。它是一个把浏览器内部运行过程全部摊开给你看的实验室。1.2 新手应该先学哪些一条能落地的学习路线我不太建议一上来就把所有面板都翻一遍那样太容易劝退。更务实的路线是先掌握高频使用的四个面板再按需学习性能分析。第一步先把 Elements 和 Console 练熟。日常写页面、调样式、看报错这两个面板已经能覆盖九成场景。练熟的意思是能快速选中页面任意元素、能判断当前生效样式来自哪个文件哪一行、能在 Console 里看懂报错堆栈、能用 console.table 梳理接口返回的数据。第二步学 Network。不管你是测接口、排查线上资源加载失败还是做首屏性能优化都要通过 Network 看“请求列表、耗时瀑布、状态码、响应内容”。我经常给新人的建议是把 Network 面板当成一个“抓包工具”来理解日常开发时养成看它的习惯而不是等出了问题才打开。第三步再啃 Sources 断点调试和 Performance 性能分析。这两块是拉开差距的地方。遇到复杂逻辑console.log 打一百遍不如在 Sources 里打一个断点遇到卡顿直接录一段 Performance 就能定位到具体函数。第四步把配套生态用起来。Vue 项目装 Vue DevtoolsReact 项目装 React Devtools里面对组件树、props、state 的可视化能力能省下大量写 console 的时间。这条路线里每一步都是下一个能力的基础。所以下面我把前四个核心面板逐个拆开讲每个面板都给出可以直接照做的核心操作。2. 四个必会面板的核心功能与实操要点2.1 Elements改样式、查布局、模拟状态的调试利器Elements 面板是很多人“入坑” DevTools 的第一个面板。它左边是 DOM 树右边是样式区选中某个元素后可以实时改样式、删节点、调整 class所见即所得。页面上有个文字颜色不对定位到它的元素直接在右侧把 color 属性改掉试试如果符合预期再回到编辑器改动这就是最常规的用法。有几个点是我反复跟新人强调的。第一选中元素的方式不只“右键—检查”这一种你还可以在 Elements 面板左上角点击那个带箭头的图标或者按 CtrlShiftC然后直接在页面上移动鼠标悬停哪个元素DOM 树就会高亮哪个元素。对于需要检查一个复杂嵌套组件的内层结构时这个方式比右键快得多。第二改样式时要注意“作用域”和“优先级”。元素样式区里从上到下排列着不同来源的样式规则被划掉的那条通常是优先级更低或者被覆盖掉的规则。与其在编辑器里猜不如先在这里看被谁覆盖往往一眼就能找出问题。特别是在写 Vue 或者 React 组件时父组件的样式一不小心就会穿透进子组件这种坑只有通过“看哪条规则被划掉”才能快速定位。第三不只是样式可以被改状态也可以被模拟。右侧 Styles 区域有一个 “:hov” 按钮点开后可以强制切换 :hover、:active、:focus、:visited 等伪类状态。做导航菜单、按钮交互的时候不用再费劲地把鼠标挪到元素上才能看 hover 效果直接在这里钩上就行。第四Elements 面板里有一个很容易被忽略的功能——DOM 断点。在 DOM 树节点上右键可以设置断点比如“节点被删除”“子节点被修改”“节点属性被修改”。我在排查一个组件为什么被某个插件替换了内容时就是用它抓到了罪魁祸首。前端项目一旦复杂连 DOM 被谁动了都不知道的情况太常见了这个功能在 Vue、React 这类框架环境里尤其有用。还有一个效率小技巧页面有微小偏移要微调 UI 时选中元素后直接按键盘方向键可以修改 padding、margin 等数值Shift方向键是大步调整。实测下来比来回切换编辑器刷新页面快很多。2.2 Console日志、命令与安全边界Console 是前端接触最多、但误解也最多的面板。先说说那些“不止 console.log”的日志方法。console.warn 会输出黄色警告console.error 会输出红色错误并带上堆栈这两个应该对应业务场景来用而不是把所有信息都打成 log。console.table 可以把数组或对象批量化成表格接口返回列表数据时用表格看字段结构比展开对象方便得多。console.time 和 console.timeEnd 可以测一段代码的执行耗时做简单性能对比时好用。Console 还能让你的调试效率上一个台阶的是它自带一些快捷变量。$0 代表当前在 Elements 面板选中的那个元素你在 Console 里敲 $0.style.backgroundColor red就能直接改这个元素的背景色。$_ 代表上一次执行的返回结果。$() 是 document.querySelector 的简写$$() 是 document.querySelectorAll 的简写。熟悉这套以后很多临时调试动作都不需要写完整的一行 JavaScript。再就是日志过滤和保留。Console 面板顶部的日志等级下拉菜单可以按 Verbose、Info、Warnings、Errors 过滤专门看红、黄还是全量。旁边有个重要的复选框“Preserve log”中文叫“保留日志”它的作用是页面跳转或刷新后不清空控制台。排查“打开某个页面请求后报错”的问题时没有这个选项跳转瞬间报错就消失了。这里必须讲一个安全边界因为它直接关系到你是否会被钓鱼。现在很多站点会在控制台打出一段带颜色的大字提示内容是让你往控制台里粘贴一段代码说是“解锁会员”“加速下载”“领取福利”。Chrome 官方针对这类行为做了防护当你尝试在控制台粘贴内容时浏览器会弹出警告大意是“不要粘贴你不理解或未审查过的代码到 DevTools 控制台这可能导致攻击者窃取你的身份或控制你的电脑”。这不是 Chrome 在吓唬人而是真实存在的攻击方式。我在社区里看到过不少案例用户在某个网站提示下把一段看起来无害的代码贴进控制台结果浏览器里保存的账号、Cookie 被自动发送到攻击者服务器。正确做法很简单只要不是自己写的或者不是非常确定来源和逻辑的代码一律不要粘贴。不需要用就永远不要好奇浏览器弹出的“允许粘贴”提示不是给你点的是给你看的。官方那句话我记得很清楚Don’t paste code into the DevTools console that you don’t understand or haven’t reviewed yourself。这句话本身就是你判断的依据。2.3 Network请求排查与性能分析的起点Network 面板的界面刚开始看可能会有点懵但核心只需要理解三块请求列表、请求详情、底部总览条。请求列表默认从左到右展示每个请求的名称、状态码、类型、大小、耗时。列表上方有一排过滤按钮All、XHR/Fetch、JS、CSS、Img、Media、Font 等等。查接口就看 XHR 和 Fetch 过滤后的结果查资源加载就看 JS、CSS、Img 这些分类。调接口出问题时我会习惯性地先看请求是否发出、状态码是多少、响应内容是什么这比直接猜逻辑快得多。选中一个请求后右边会打开详情面板Headers 看请求头、Preview 看渲染后的响应内容、Response 看原始响应文本、Timing 看耗时分阶段统计。网络耗时怎么看才不踩坑在详情面板的 Timing 页签里你可以看到请求的一生Stalled、DNS Lookup、Initial connection、TTFB、Content Download 等阶段。TTFB 过长问题多半在后端Content Download 过长多半是响应体太大或者网络带宽不足DNS Lookup 长要考虑域名解析配置。有一次我排查一个“接口偶尔很慢”的问题点开 Timing 才发现是 STST 排队时间过长浏览器对同一域名的并发连接数有限制其他大文件把连接占满了。这种问题在业务代码里查一万年也查不出来但 Network 面板一秒钟就暴露了。Network 面板还有两个我非常依赖的小功能。第一个是筛选框它支持很多筛选语法。比如输入 status-code:200 只看成功请求输入 larger-than:100k 只看大于 100KB 的请求输入 mime-type:application/json 只看 JSON 接口。第二个是右键任意请求可以看到 Copy as fetch、Copy as cURL 这些选项。查线上接口时把请求复制成 curl 命令直接丢到终端里跑就能脱离页面环境复现问题效率极高。再提一个和“淘汰缓存”相关的关键点。网络面板里勾上 Disable cache 后只要 DevTools 保持打开页面每次刷新都会绕过浏览器缓存请求完整资源。这对前端调试来说几乎是必备项特别是你改了本地代码但页面表现总像是缓存没更新的时候。最后别忘了顶部的网络模拟功能。Network 面板的条件下拉菜单里可以切换 Fast 3G、Slow 3G、Offline 等模式。本地网络环境太好很多性能问题根本“感觉”不出来切到 Slow 3G 后再刷新页面所有阻塞问题都会被放大这是做首屏性能排查最廉价有效的手段。2.4 Sources断点调试与代码覆盖分析大部分前端对 Sources 的印象是“源代码文件列表”但实际上它最重要的能力是断点调试。拿一个真实场景来说一个列表页点击“详情”按钮后没有反应你怀疑是某个字段为空导致后续逻辑中断。console.log 打日志当然能看但页面一运行就是几百行日志找起来费劲。正确的做法是在 Sources 里找到按钮的事件处理函数在关键判断那一行点一下设置一个断点然后回到页面点击按钮程序就会停在这行。这时候右侧的 Scope 面板会显示当前作用域内所有变量的值Call Stack 面板会显示函数调用链。断点有几种类型不只是“行断点”。右键断点位置可以选择“条件断点”比如只在 index 2 时停下来循环里排查数据就能精准命中。在代码文件里右键还能设置“XHR/fetch 断点”可以拦截指定 URL 片段的网络请求在事件监听器列表里可以设置“事件断点”比如在 click 事件触发时自动停住。我排查一个偶发的“点击偶尔没响应”问题时就在 click 事件断点上停住一步步走完才发现是某个动画还没结束导致事件被上层遮罩吞掉了。Sources 里还有两个对日常开发帮助极大的功能Overrides 和 Snippets。Overrides 的作用是“本地覆盖线上文件”。开启后你可以把线上 JS、CSS 甚至接口响应保存到本地修改保存后下次加载页面时浏览器直接用你的本地文件代替线上文件。排查线上问题的时候我经常在浏览器里直接改代码验证假设确认可行后再把改动同步到代码仓库省去“开发环境复现—修复—发布—线上再看”的漫长回路。Snippets 则是一个“代码片段永久保存”的入口。可以在 Sources 左侧的 Snippets 标签里新建一小段 JavaScript保存后随时点击运行。比如我有一段常用的“检查页面是否存在内存泄漏”的脚本、一段“统计页面所有资源请求数量”的脚本存在这里以后每个项目都能直接用。3. 一次完整的性能问题排查实战3.1 用 Performance 录制真实操作上面讲的面板各有各的长处但“定位页面卡顿”这个需求任何单一面板都不如一整套 Performance 流程有效。我们假设正在做一个 Vue3 Element Plus 的自适应大屏项目用户反馈页面初期加载很慢而且切换 tab 时会有明显卡顿。在性能分析之前先把前提条件设置好切换到无痕窗口关掉无关扩展Network 网络模拟先选成 Fast 3G这样问题会被放大更容易观察。打开 Performance 面板点击左上角的录制圆点然后手动刷新页面或者直接在页面里做一遍有问题的操作录制几秒钟后停止。Performance 会生成一条完整的时间轴顶部是 CPU、网络、帧率三个总览图下面是一个庞大的任务执行瀑布。看这份录制的思路是有顺序的。先看帧率缩略图有没有大段红色区域红色代表掉帧。然后看 CPU 区域的色块黄色是 JavaScript 执行紫色是样式计算和布局绿色是渲染绘制。哪个色块面积大瓶颈就在哪一环。再往下看找到那些标红的长任务点进去就能看到到底是哪个函数占用了主线程。我在这个项目里发现的问题就是典型的“脚本过度阻塞渲染”某个图表组件在初始化时用了一个非常耗时的纯计算逻辑CPU 上出现了一个接近 800ms 的长任务导致页面切换动画卡顿。在 Performance 里选中这个长任务右侧面板直接显示了函数名和耗时我定位到是这个组件内部在做数据处理。后来把计算放到了 Web Worker 里执行主线程被释放问题解决。这里顺带一提热词里有人搜“前端使用 worker 上传大文件”其实和这个思路完全一致凡是主线程里耗时较长的计算或者 IO都值得考虑放 Worker 分担。Performance 面板恰恰能告诉你哪些任务够格被拎出去。3.2 用 Lighthouse 生成可执行的诊断报告Performance 适合看“运行时发生了什么”而 Lighthouse 更适合做“静态健康度评分”。它本质上是跑在无头浏览器里的一组审计工具对页面加载过程进行自动分析输出一份包含 Performance、Accessibility可访问性、Best Practices最佳实践、SEO 四个维度分数的报告。用法很简单切到 Lighthouse 面板勾选要审查的类别设备类型选移动端还是桌面端然后点击生成报告。建议首次测试时网络模拟不开以真实网络为准发现问题后再在 Network 里模拟 Slow 3G 做二次复测对比优化前后数据。Lighthouse 报告每条建议都写得非常直白比如“移除阻塞渲染的脚本”“避免过大的网络载荷”“使用现代图片格式”“给图片声明尺寸”。它会给每一条建议配上“估算节省的时间”。实际项目里我会把 Lighthouse、Performance、Network 三者组合使用。Lighthouse 先给方向Network 看资源Performance 看运行时。有一次首屏 FCP 总是慢半秒Lighthouse 提示“有较大的网络载荷”我点进 Network 一看一个 3MB 的地图数据 JSON 在首屏就被全部加载。解决方案是改为按需请求首屏只请求当前视野范围的数据。优化后 FCP 从 2.8s 降到了 1.6sLighthouse 的 Performance 分数从 61 提到了 88。3.3 移动端真机调试与响应式模拟大屏项目通常还要适配不同屏幕尺寸自定义大屏方案在桌面端可能没问题但移到笔记本小屏或者做演示时就可能出现布局溢出。这种场景DevTools 的设备模拟功能就派上用场了。点开 DevTools 左上角的设备切换图标或者按 CtrlShiftM就能进入响应式设计模式页面会模拟到指定设备尺寸。你可以从预设的手机型号里选也可以拖动页面边缘调整自定义尺寸。做 Vue3 Element Plus 自适应大屏时我会直接把它调成 1920×1080、1366×768、768×1024 几个关键分档逐一检查布局是否正常。但设备模拟只是“模拟”有些问题只有真机才会出现。真机调试有两条路。安卓手机开启开发者模式和 USB 调试用数据线连电脑在 Chrome 地址栏输入 chrome://inspect找到你的设备点击 inspect就会打开一个和桌面版几乎一样的 DevTools 窗口可以看 DOM、看网络、看控制台、抓页面性能。iPhone 的 Safari 调试逻辑类似需要在 Mac 上的 Safari 开发菜单里开启然后用 Lightning 线连接。安卓真机调试有个关键前提手机、电脑需要在同一网络里而且部分页面必须通过 HTTP 访问。如果你在电脑上用 localhost 起服务手机上是没法直接访问的需要设置端口转发或者在电脑上监听 0.0.0.0 后用局域网 IP 访问。我平时会在 package.json 的 dev 脚本里把 host 设为 0.0.0.0省得每次都要改。4. 常见问题与高频报错排查速查4.1 控制台的 Allow pasting 警告是怎么回事很多新手第一次在控制台粘贴代码时会看到一大段警告文字末尾还带一个输入框提示输入“允许粘贴”才能继续。这个设计我第一次遇到也有点懵以为浏览器坏了后来才明白这是一个防范恶意代码粘贴的措施。Chrome 检测到你在控制台尝试粘贴内容时会判断这段内容来源不明于是弹出警告。因为控制台具有在当前页面环境执行任意 JavaScript 的权限攻击者一旦诱导你粘贴一段脚本等于直接把你的登录态、Cookie、表单数据拱手送出。这也是为什么现在很多恶意网站在控制台打印花花绿绿的“横幅广告”甚至伪装成“DevTools 更新提示”目的就是诱导你粘贴。碰到这个警告我的处理原则是先停下来想 5 秒钟——我为什么要粘贴这段代码这段代码我读过吗如果不是我自己写的调试代码不贴。如果是自己写的或者完全可控的代码确实需要粘贴那就输入“允许粘贴”后继续。这个功能不会影响正常开发只是给“盲目复制粘贴”增加一道门槛。4.2 为什么 Vue Devtools / React Devtools 没反应装了 Vue Devtools 却发现页面上没有图标是新手求助区的高频问题。绝大多数情况是版本和项目不匹配。Vue Devtools 分 Vue 2 和 Vue 3 两个主要版本独立插件分别对应不同 Vue 版本。如果你的项目是 Vue 2却装的是新版仅支持 Vue 3 的插件或者反过来图标就不会亮起来。还有一个常见前提插件的图标只在“当前页面正在运行 Vue”的时候才会高亮并变成可点击状态。页面是用 Vue 编译后的生产环境文件时插件也可能不显示因为生产版本默认关闭了 devtools 检查。还有一点很容易被忽略——项目里如果用 Vue Devtools 插件在 Chrome 里打开开发者工具后记得看 DevTools 顶部标签会出现一个 “Vue” 标签页有时候它被折叠了你得左右滚动标签栏才能找到。React Devtools 的坑也很相似。你先确认是不是在 Chrome Web Store 安装的官方插件装完重启 DevTools再看项目是不是在生产环境模式下运行。生产构建默认不加载 React DevTools 的调试钩子所以本地 dev 服务跑起来才看得到组件树。如果项目同时在用 qiankun 这类微前端框架多个子应用轮流挂载到页面上DevTools 组件树有可能会出现“只能看到其中一个应用”的情况这不是插件坏了而是应用加载顺序和节点隔离导致的可以先在单个子应用独立运行时确认插件是否正常。4.3 Chrome 插件装不上先从这三个方向排查热词里“Chrome 无法安装扩展程序”也是高频问题这里我再展开一下。遇到插件装不上先分三步看第一步确认来源。Chrome 目前默认只允许从 Chrome Web Store 安装扩展程序。如果你是通过第三方网站下载的 .crx 文件直接拖拽安装会被阻止Chrome 会提示“无法安装此扩展程序”。这不是故障是安全策略。特别是 Chrome 109 以后这种离线安装的路径基本被堵死了。只能通过商店安装或者临时开启开发者模式在 chrome://extensions/ 页面点击“加载已解压的扩展程序”选择解压后的插件目录。第二步确认浏览器是不是企业或学校策略管控状态。如果 chrome://extensions/ 页面顶部有“由您的组织管理”的提示说明浏览器被安全策略接管了很多安装动作会被禁止。这种情况比较难绕过一般建议联系管理员或者换一台个人电脑。第三步看看是不是扩展本身和你的 Chrome 版本不兼容。有的老插件只支持 Chrome 109 以下版本新版浏览器可能因为 Manifest V2 迁移而无法运行。2024 年后 Chrome 开始逐步淘汰 MV2 扩展只支持 MV3 的插件不少老插件根本没有 MV3 版本装不了就别硬装找替代品更省时间。4.4 强制刷新、清空缓存别再记错快捷键“为什么我改了代码页面好像没变”是每个前端都会遇到的问题。很多人第一反应是按住 CtrlShiftR 强制刷新。这个快捷键对应的是“硬性重新加载”会绕过本地缓存重新拉取资源。另一个方法是右键刷新按钮菜单底部会有一个“清空缓存并硬性重新加载”的选项这个操作更彻底会先清空缓存再做硬刷新。更科学的做法是如果 DevTools 已经打开就切到 Network 面板勾选顶部的 Disable cache。这样只要 DevTools 开着任何一次普通刷新都会跳过缓存。有一点要注意Disable cache 只在 DevTools 打开时生效关掉 DevTools 后浏览器会恢复原有缓存策略。在 DevTools 打开的状态下页面里的操作有时候和键盘快捷键会有冲突。比如输入法尤其是基于 Wayland 输入法前端在某些 Linux 桌面环境下会和 DevTools 的快捷键抢事件导致按 CtrlR 没反应。这个不是 DevTools 本身的问题而是输入法框架把按键拦截了。遇到这种情况可以直接点击浏览器地址栏右边的刷新按钮或者用鼠标右键刷新按钮选择“清空缓存并硬性重新加载”都能绕开快捷键冲突。5. 博主私藏的几个调测习惯5.1 快速复制请求为代码我说过很多次的效率技巧是“Copy as fetch”。在 Network 面板里右键任意 XHR 请求选择 Copy再选 Copy as fetch浏览器会把这个请求转成完整的 fetch 代码包含所有请求头、Cookie、请求体。然后粘贴到 Console 里执行即可在页面环境下重放请求。这个能力的价值在于你可以脱离页面业务逻辑直接验证一个接口是否正常也可以在本地修改请求体后再次发送快速定位是“接口参数问题”还是“前端逻辑问题”。同类功能还有 Copy as cURL、Copy as HAR。HAR 文件可以在两个浏览器之间导入导出网络请求记录报障时把 HAR 发给同事比截图一百遍都靠谱。5.2 用 Overrides 和 Snippets 把浏览器变成草稿本前面讲过 Overrides 可以覆盖线上的 JS 和 CSS 文件实际操作时有一个细节需要注意第一次开启 Overrides 时会要求你选择一个本地文件夹浏览器会在该文件夹下自动记录被覆盖的文件。之后在 Sources 面板里直接修改文件内容并保存刷新页面就能看到改动。我在处理“线上样式错乱、但又不想拉一套本地环境”的场景时经常用 Overrides。比如线上某个弹窗组件的宽度计算有问题我直接在覆盖文件里改一行 CSS刷新页面确认效果再把改动回传到代码仓库。整个过程省去了“本地启动项目—复现问题—修改—打包—发布”的漫长回路。Snippets 的使用也非常顺手。在 Sources 面板左侧切到 Snippets 标签新建一个片段写入比如“统计当前页面图片总大小”“检测页面上是否绑定了重复的事件监听器”这类日常脚本保存后右键运行。我现在电脑上保留了十多个这种小脚本从“一键导出页面所有接口请求列表”到“清空 localStorage 并刷新”随取随用。5.3 在控制台里做简单的性能对比最后一个私藏习惯是用 Console 的命令行 API 做小型性能对比。如果你想知道两种写法的性能差异到底有多大不需要上什么重型工具直接在 Console 里用 console.time 对比即可。console.time(数组去重-方式A); // 方式A代码 console.timeEnd(数组去重-方式A); console.time(数组去重-方式B); // 方式B代码 console.timeEnd(数组去重-方式B);要注意的是单次运行的结果随机性很大受浏览器当前状态影响。可以配合循环多跑几轮取一个相对稳定的平均值。做一个微改进就上 Performance 录制确实有点杀鸡用牛刀控制台这一套才是日常性价比最高的对比手段。调试只是开发的一角但调试能力深刻决定了开发效率。DevTools 的新版本一直在迭代比如 Recorder 面板可以录制用户操作流程并回放用于自动化验证Rendering 面板可以查看页面各种渲染辅助信息Coverage 面板可以统计代码覆盖率。这些都是“面试不会问但工作天天用”的能力。把基础面板用得足够熟练比记住一堆冷门 API 更值钱。至少对我而言一半以上的“灵光一现”式调试思路都是在翻看 DevTools 面板时冒出来的。试试从今天开始别再把 DevTools 只当“看报错”的工具你会发现前端排障的整个世界都变宽了。
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门