昨天在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提高工作效率的技巧和方法。