Firefox 开发者工具 65 新增功能

我们刚刚发布了 Firefox 65,其中包含许多新的开发者功能,使您更轻松地创建、检查和调试网页。

在本次新版本中,开发者工具中包含的所有功能和错误修复中,我们想重点介绍两个功能:

  • 全新的 Flexbox Inspector
  • 更智能的 JavaScript 检查和调试

我们希望您像我们和社区一样喜欢使用这些工具。

以前所未有的方式理解 CSS 布局

Firefox 开发者工具团队致力于帮助您掌握 CSS 布局。我们希望您能从“尝试直到成功”转变为真正理解浏览器如何布局页面。

介绍 Flexbox Inspector

Flexbox 是一种以灵活的方式组织和分配页面上元素的强大方法。

为了实现这一点,浏览器的布局引擎在幕后做了很多事情。当一切正常时,您无需担心这些。但是,当您的布局中出现问题时,您可能会感到沮丧,您可能真的需要理解元素为何以某种方式表现。

这正是 Flexbox Inspector 的重点。

突出显示容器、行和项目

首先,Flexbox Inspector 会突出显示组成 Flexbox 布局的元素:容器、行和项目。

能够看到这些元素的开始和结束位置,以及它们之间的距离,将极大地帮助您理解正在发生的事情。

Flexbox highlighter showing containers, items and available space

启用后,高亮显示器将显示三个主要部分:

  • 一个虚线轮廓,突出显示 Flex 容器本身
  • 实线,显示 Flex 项目的位置
  • 代表项目之间空闲空间的背景图案

一种启用 Flexbox 容器高亮显示器的方法是点击检查器中的“flex”徽章。这是一种在 DOM 中扫描元素时查找 Flex 容器的简便方法。此外,您还可以从 CSS 规则面板中的 Flex 图标以及布局侧边栏中新 Flexbox 部分的切换按钮启用高亮显示器。

Animation showing how to enable the flexbox highlighter

了解 Flex 项目如何获得其大小

Flexbox 的优点在于您可以让浏览器为您做出正确的布局决策。元素应该伸展多少,还是应该换行?

但是,当您放弃控制时,您如何知道浏览器实际上在做什么呢?

Flexbox Inspector 带有显示浏览器如何分配给定项目大小的功能。
Flexbox container panel showing a list of flexbox items

布局侧边栏现在包含一个 **Flex Container** 部分,其中列出了所有 Flex 项目,并提供有关容器本身的信息。

点击任何一个 Flex 项目将打开 **Flex Item** 部分,其中显示浏览器如何计算项目大小的详细信息。
Overview of Flexbox Item panel showing sizing informatin

Flexbox 部分顶部的图表快速概述了浏览器为项目指定大小所采取的步骤。

它显示了项目的基准大小(其最小内容大小或其 flex-basis 大小),从该大小添加的灵活空间(flex-grow)或移除的灵活空间(flex-shrink),以及限制项目变得更短或更长的任何最小或最大定义大小。

如果您在 Firefox 65 上阅读本文,则现在就可以试用它!

在该页面上打开 **检查器**,然后选择 div.masthead.row 元素。在侧边栏中查找 **Flex Container** 面板,然后点击这两个项目以查看浏览器如何计算它们的大小。

Animation showing how to use the Flexbox Inspector

修复错误后,跟踪更改

假设您使用 Flexbox Inspector 修复了一个 Flexbox 错误。为此,您对各种 CSS 规则和元素进行了一些编辑。这时,您通常会遇到一个我们都遇到的问题:“我到底改变了什么才能让它起作用?”

在 Firefox 65 中,我们还引入了一个新的 Changes 面板 来实现这一点。

New changes panel showing additions, deletions and modifications of CSS as diff.

它会跟踪您在检查器中所做的所有 CSS 更改,因此您可以像往常一样继续工作。满意后,打开 **Changes** 选项卡,查看您所做的一切。

布局工具的未来发展方向

我们非常高兴您试用这两个新功能,并告诉我们 您的想法。但还有更多内容。

您一直在 告诉我们 您在 CSS 方面面临的最大挑战,我们一直在倾听。我们目前正在为调试不必要的滚动条、不起作用的 z-index 等问题制作布局工具,以及为 Flexbox Inspector 等其他类型的布局制作更多类似的工具。此外,我们将使您更容易从 Changes 面板中提取更改。

更智能的 JavaScript 检查和调试

在开发 JavaScript 时,控制台和调试器是您了解代码执行流程和状态更改的窗口。在过去的几个版本中,我们一直专注于使调试更好地适用于现代工具链。Firefox 65 延续了这一主题。

折叠框架堆栈跟踪

如果您使用框架和构建工具,那么您习惯在控制台中看到非常长的错误堆栈跟踪。新的智能堆栈跟踪会识别第三方代码(如框架),并默认将其折叠起来。这大大减少了在 **控制台** 中显示的信息,并让您专注于 *您的* 代码。
Before and after version of stack traces in console.

**折叠** 功能适用于控制台错误和日志的堆栈跟踪,以及调试器调用堆栈。

反向搜索控制台历史记录

如果您厌倦了猛烈敲击箭头键来查找一小时前在控制台中运行的令人惊叹的一行代码,那么这正是您需要的。反向搜索是众所周知的命令行功能,它可以让您快速浏览与输入字符串匹配的最近命令。

Animation showing how to use reverse search in the console

要在控制台中使用它,请在 Windows/Linux 上按 *F9*,或在 MacOS 上按 *Ctrl+R*,然后开始输入。然后,您可以使用 *Ctrl+R* 移动到上一个结果,或使用 *Ctrl+S* 移动到下一个结果。最后,按回车确认。

调用 getter 来检查返回值

JavaScript getter 非常适用于动态属性,并且在像 vue.js 这样的框架中被广泛用于计算属性。但是,当您将带有 getter 的对象记录到控制台时,记录的是该方法的引用,而不是其返回值。该方法不会自动调用,因为这可能会更改应用程序的状态。由于您通常实际上想要查看值,因此您现在可以手动调用记录到对象中的 getter。

Animation showing how to invoke getters in the console

无论在控制台还是调试器中,只要可以检查对象,您都会在 getter 旁边看到 >> 图标。点击这些图标将执行该方法并打印返回值。

在 XHR/Fetch 断点处暂停

控制台日志只是了解应用程序状态的一个方面。对于复杂的问题,您需要在恰当的时刻暂停状态。获取数据通常是这些时刻之一,现在它通过调试器中的新 XHR/Fetch 断点变得“可暂停”。

XHR Breakpoints panel in the debugger
感谢 Firefox 开发者工具代码贡献者 Anshul Malik 为此有用功能提交了 “随意”的补丁,并感谢他一直以来的贡献。

JavaScript 调试的未来发展方向

您可能已经注意到,在最近的几个版本中,我们一直在努力使 JavaScript 调试体验更加稳固,包括断点、单步执行、源映射、性能等方面。提高质量标准,并继续改进和完善,仍然是整个团队的重点。

我们正在进行一些工作,包括针对 **列断点**、**日志点**、**事件** 和 **DOM 断点** 等功能的开发。我们正在控制台中构建创作体验,添加多行编辑模式(灵感来自 Firebug)以及更强大的自动完成功能。请关注 Firefox Developer Edition 的最新版本中这些功能的发布。

感谢

无数贡献者通过提交错误、编写补丁和验证补丁帮助开发者工具团队。特别感谢:

另外,感谢 Patrick BrossetNicolas Chevobbe 和整个 DevTools 团队及朋友们帮助撰写了这篇文章。

贡献

我们始终欢迎您对如何改进 DevTools 和浏览器的反馈。

下载 Firefox 开发者版 以获得即将发布的工具和平台的抢先体验。

关于 Martin Balfanz

Martin 是 Mozilla 的产品经理,负责 Firefox DevTools。

更多 Martin Balfanz 的文章...

关于 Harald Kirschner (digitarald)

Harald "digitarald" Kirschner 是 Firefox 开发者体验和工具的产品经理,致力于赋予创作者能力,让他们能够编写、设计和维护一个对所有人开放和可访问的网络。在 Mozilla 工作的 8 年中,他在性能、Web API、移动、可安装 Web 应用程序、数据可视化和开发者推广项目中不断提升技能。

更多 Harald Kirschner (digitarald) 的文章...


11 条评论

  1. James Blazzike

    这太棒了,现在可能会考虑在 Firefox 上开发!

    2019 年 2 月 1 日 上午 00:39

    1. Harald Kirschner

      很高兴听到这个消息。我们的目标是让 DevTools 对所有用户来说都感觉友好(但功能强大),无论他们的主要开发浏览器是什么。

      2019 年 2 月 4 日 下午 13:16

  2. Daisuke Nogami

    所以旧的调试器前端消失了,连同可用的断点和值编辑。干得漂亮。

    2019 年 2 月 4 日 下午 12:44

    1. Harald Kirschner

      我们正在努力填补重写后留下的功能缺口。断点质量一直是我们关注的问题(旧的调试器也受到影响)。在 67 中,将通过列断点和新的事件断点面板来实现显著的断点质量改进。我们希望尽快在几周后发布开发者版时提供更新!

      2019 年 2 月 5 日 下午 22:03

  3. Yan Hui

    Firefox 的 DevTools 对我来说很不错!我喜欢它!

    2019 年 2 月 5 日 上午 01:31

  4. David

    我越来越喜欢 Firefox 开发者版了。关于调试器,是否有计划允许直接在调试器中编辑源代码?当然,如果源代码是本地的。

    2019 年 2 月 6 日 上午 09:25

    1. Harald Kirschner

      感谢您的支持!

      JS 编辑是我们的首要任务!虽然这是一个难题,但我们正在努力为开始实际实现奠定基础;也许今年会实现(但没有承诺)。您在本地源代码编辑方面的用例可能是最合理的;另一个方面是将其与“跟踪更改”集成。

      2019 年 2 月 6 日 上午 10:37

  5. Claudinei Perboni

    嗯,现在再好不过了。现在可以考虑使用 Firefox 了。

    2019 年 2 月 7 日 上午 09:40

  6. Thomas Kehne

    我对这些令人印象深刻的改进感到震惊,我刚刚捐款了......

    2019 年 2 月 8 日 上午 04:32

  7. J Redhead

    多行编辑听起来很不错;我只希望这并不意味着您将淘汰 Scratchpad!

    2019 年 2 月 10 日 下午 13:56

    1. Harald Kirschner

      我们将淘汰 Scratchpad,因为它需要完全重写才能继续成为一个可行的功能。研究表明,大多数用户想要多行编辑模式;因此,我们在删除 Scratchpad 之前保留了此功能。

      我很想知道,您主要用 Scratchpad 解决什么问题?

      2019 年 2 月 11 日 上午 11:29

本文的评论已关闭。