听说掌握 chrome 这些调试技巧,至少可以提高 30%开发效率...
背景
作为前端开发,chrome 可以说是我们使用最多的工具,而 chrome 中使用最多的就是 devTools。其实 devTools 中隐藏着很多提高开发、调试效率的小技巧。工欲善其事,必先利其器,今天我们就分别了解下这些 chrome 的小技巧,开发效率 up up up!
正文
Elements 面板
作为前端开发,chrome 可以说是我们使用最多的工具,而 chrome 中使用最多的就是 devTools。其实 devTools 中隐藏着很多提高开发、调试效率的小技巧。工欲善其事,必先利其器,今天我们就分别了解下这些 chrome 的小技巧,开发效率 up up up!
我们平时展现给用户的页面结构和样式主要是通过 Elements 面板操作,接下来我们就来了解一些和 Elements 相关的使用技巧。
- 隐藏 dom 元素 :点击选中当前 dom 节点,按键盘的 h 键,即可隐藏/显示当前选中元素。对于在一些调试场景想快速隐藏某些元素时就会很方便。
- 展开节点所有子节点:option + 点击当前节点左箭头,即可展开当前节点以下的所有 dom 节点,大大节省了我们寻找 dom 时一个一个点开的时间。
- 复制当前 dom 节点:选中当前节点后,右键复制或直接 cmd + c 或 ctrl+c,尤其使用键盘快捷键复制,可以快速复制当前 dom 节点。
Console 面板
Console 控制台可以说是我们前端同学使用最多的工具了,调试、自测都经常用到它。接下来我们就来了解下 Console 面板相关的一些技巧。
- copy() :Console 控制台中使用 copy 函数可以直接对其参数进行复制。
但是注意,这里的 copy 是不会复制函数的。
- 保存报错信息:对控制台中的报错信息右键选择
save as
保存。
- console 中的异步 :console 控制台中是默认被 async 包裹的,可以直接使用 await 获取异步结果。
如:console.table(await navigator.storage.estimate());
- console 中的$ :
$('.节点类名')
:相当于 document.querySelector('.节点类名')。$$('.节点类名')
:相当于 document.querySelectorAll('.节点类名')。
![console中的 -202212291606.gif)
$0
:当前选中的 dom 节点,$1
为上次选中的 dom 节点,$2
为上上次选中的 dom 节点,直到$4
。
![console中的 0-202212291630.gif)
$_
:通过使用$_
可以直接使用控制台中上次执行的结果。
$i
:需要安装 chrome 插件 Console Importer, 安装后就可以直接在控制台使用已安装的 npm 插件。如下:
// 先安装
$i('moment')
// 安装成功后,就可以在控制台直接使用该插件
moment()
- monitor:monitor 可以监听任何你传入的方法,当方法被执行时,会在 console 控制台打印出来,包括调用的函数名,以及给相应函数传递的参数。如果想取消监听,则可以使用 unmonitor。
class Vehicle {
constructor(name, color) {
this.name = name;
this.color = color;
}
getName(){
return `我是 ${this.name}。`
}
getInfo() {
return `我是 ${this.color}颜色的 ${this.name}`;
}
getOther() {
return `我是 ${this.color}颜色的 ${this.getName()}`;
}
}
- monitorEvents:monitorEvents 可以对 dom 的事件进行监听,当被监听的 dom 的某个事件方法执行时,就会自动在控制台中打印该事件。如果想指定监听的事件类型,可以通过 monitorEvents 的第二个参数传入事件类型即可。如果想取消监听事件则可以使用 unmonitorEvents。
-
console 日志打印:
-
console.table:table 可以对对象或数据以表格的形式打印出来,也可以使用简写 table()。
let info = { name: 'Tom', age: 13, gender: 'boy', hobby: 'football', } const {name, age, gender, hobby} = info; console.table({name, age}); table(info); ```
-
console.dir: 有时你想要打印一个 DOM 节点,console.log 会将这个元素渲染成像是从 Elements 中剪切出来的一样。如果你想查看这个节点所关联到的真实 js 对象,或查看它的属性,这时就可以使用 console.dir,或直接使用 dir() 也是一样的效果。
-
Network 面板
平时前端同学在与后端同学交互时,用的最多的就是 Network 了,接下来就是 Network 相关的一些实用技巧。
- 重发 newwork 请求: 右键单击请求,选择 replay XHR。
- 复制 response: 右键单击请求,选择 copy response。
- 在控制台快速发起请求: 右键单击请求,选择 copy as fetch,直接在控制台进行接口的调用。
Sources 面板
平时我们在 debug 代码时,就经常用到 Sources,接下来我们就了解下 Sources 相关的小功能。
- 复用代码块:在 Sources 中有一个小功能,叫 Snippets。它是做什么的呢。比如我们平时有一些经常用到的脚本代码需要在浏览器中执行, 又不想反复的复制粘贴执行,这时候就可以用到它了!
路径:sources -> Snippets: 新建代码块。
运行:sources 中 cmd + enter 或鼠标右键选择
run
,或全局下 cmd + p,输入!根据名字使用预设 snippets。
- 条件断点:如果我们想在浏览器直接调试,并且只在特定条件下触发断点,这时我们就可以使用条件断点: sources->Add conditional breakpoint(添加条件断点)。
- chrome 中开发:如果喜欢微信开发者工具式的开发方式,可以使用 devTools 中的 workspace:sources-FileSystem-Add Folder to workspace,对本地文件直接进行开发修改,修改会及时同步到当前文件。
Drawer 面板
Drawer 面板可以理解为控制台的简版,其中还包含了比如 Animations(动画检查器)、Coverage(检查代码)、Changes(代码改动监测器)等小功能,这里我主要讲解下 changes 的使用。
- 打开/关闭 drawer:Esc 键可以切换 drawer 的显示与隐藏。
- 检查修改的内容:Drawer-changes, 可以查看到在浏览器中修改的样式与之前的对比,而 changes 最下方可以对修改进行复制和回撤。
其他技巧
- 打开命令面板:快捷键 cmd+shift+p。
- 截屏:打开命令面板后,搜索
Capture
,选择Capture full size screenshot
可以对当前页面进行全屏截屏;如果只是想要对单个 node 节点进行截屏,可以选择Capture node screenshot
进行 node 截屏;如果只是对当前视窗页面进行截屏,则选择Capture screenshot
;如果想自己在页面选截屏区域,选Capture area screenshot
。
- theme 切换: 打开命令面板后,搜索
theme
,选择Switch to dark theme
或Switch to light theme
可以对当前浏览器的主题色进行切换。
总结
至此,本篇文章关于 chrome 的技巧就分享完了。
本篇文章主要总结了 Elements、Console、Network、Sources、Drawer 相关的技巧。当然,devTools 还有很多其他很有用的技巧等待大家继续探索,这篇文章只是抽取了平时可能经常用到的一些功能进行的总结。
希望这篇文章可以帮助大家更高效的开发,新的一年了,也祝大家都可以升职加薪,心如所愿!
参考链接
developers.google.com/web/tools/c… developers.google.com/web/tools/c… xie.infoq.cn/article/175…
作者介绍
李馨馨:日常热衷中医养生的佛系girl~