Modern Web Debugging 技术演讲笔记

104 阅读3分钟

昨天在feday活动上,我参加了一场名为"Modern Web Debugging"的主题演讲,演讲者深入解析了当今前端调试领域的一些关键技术。以下是演讲的主要内容和一些建议:

1. DevTools的演进

演讲者回顾了十五年前的DevTools,强调现代版本更加简化,同时提到如果在使用中发现翻译中文存在问题,可以积极提交bug,为工具的不断完善提供反馈。

2. Source Map的关键作用

a. 浏览器的理解范围

浏览器只能理解HTML、CSS、JS和WASM,而为了使用更高级的语言如TypeScript,构建工具成为必需,使得开发者能够使用喜欢的语言,同时让浏览器能够理解。

b. 调试的挑战

演讲者指出调试是开发中耗时最多的活动之一,有时写六分钟的代码可能需要一整天的调试。在这方面,Source Map的关键作用得以彰显,通过Mappings,如main.js.map中的Base64 VLQ字符串,浏览器能够实现对其他语言的调试支持。

3. 新特性的应用

a. 更智能的调试视图

现代DevTools支持一些新特性,如默认隐藏第三方代码,只显示自己的调用栈。还可以通过group by file或者authored deploy进行更细粒度的调试控制,这需要借助map中的Google ignoreList实现。

b. 高级配置

工具链的更新通常会自动支持现代工具如Vite,但对于一些较老的工具(比如Rollup),可能需要手动配置。手动添加配置的原因在于,如果不忽略第三方代码,可能会影响事件拦截的效果。

4. Source Map的局限性

演讲者提到Source Map并非完美,特别是在代码压缩方面存在挑战。由于代码压缩将代码变成一行,一些只用一次的变量被合并,难以恢复。现状是,虽然Google在2011年发布了非官方规范,但并未被广泛采用,计划通过与TC39合作进行标准化。

5. 开发中的小技巧

a. Override Headers

通过Override Headers,可以直接解决跨域问题,同时也能测试一些安全方面的headers,这些往往无法连续改动。

b. Override Contents

通过模拟数据的方式进行mock,可以在后端修复前绕过一些问题,提高调试效率。

c. 录制器

DevTools的More Tools菜单中的录制器能够实现自动化操作,并通过show code按钮输出流程代码,方便共享给团队成员。此外,还有一个命令行工具,可以调用录制的代码。

d. Emulate Focus Page

这个功能可处理一些需要聚焦才能实现的功能,避免移动控制台对UI的影响,例如测试搜索框需要输入后才能提示补全的功能。

e. Snippet

在Source控制台中创建Snippet,并通过Ctrl+Shift+P组合键调用函数,提高开发效率。

总体来说,这场演讲深入探讨了现代前端调试工具的各个方面,为开发者提供了更多利用DevTools提高工作效率的技巧和方法。