Что нового в DevTools (Chrome 70)

Кейс Баскс
Kayce Basques

Добро пожаловать обратно! Прошло около 12 недель с момента нашего последнего обновления, которое было для Chrome 68. Мы пропустили Chrome 69, потому что у нас не было достаточно новых функций или изменений пользовательского интерфейса, чтобы о них написать отдельный пост.

Новые функции и основные изменения в DevTools в Chrome 70 включают:

Продолжайте читать или смотрите видеоверсию этого документа:

Живые выражения в консоли

Закрепите Live Expression в верхней части консоли, когда вы хотите отслеживать его значение в режиме реального времени.

  1. Нажмите «Создать живое выражение». Создать живое выражение . Откроется пользовательский интерфейс Live Expression.

    Пользовательский интерфейс Live Expression

    Рисунок 1. Пользовательский интерфейс Live Expression

  2. Введите выражение, которое вы хотите отслеживать.

    Введите Date.now() в пользовательский интерфейс Live Expression.

    Рисунок 2. Ввод Date.now() в интерфейс Live Expression

  3. Щелкните за пределами пользовательского интерфейса Live Expression, чтобы сохранить свое выражение.

    Сохраненное живое выражение.

    Рисунок 3. Сохраненное живое выражение

Значения Live Expression обновляются каждые 250 миллисекунд.

Выделение узлов DOM во время Eager Evaluation

Введите выражение, которое вычисляется как узел DOM в консоли, и Eager Evaluation теперь выделяет этот узел в области просмотра.

После ввода document.activeElement в консоли узел подсвечивается в области просмотра.

Рисунок 4. Поскольку текущее выражение вычисляется как узел, этот узел выделяется в области просмотра.

Вот несколько выражений, которые могут оказаться вам полезными:

  • document.activeElement для выделения узла, который в данный момент находится в фокусе.
  • document.querySelector(s) для выделения произвольного узла, где s — CSS-селектор. Это эквивалентно наведению курсора на узел в дереве DOM .
  • $0 за подсветку любого узла, выбранного в данный момент в дереве DOM.
  • $0.parentElement для выделения родительского элемента текущего выбранного узла.

Оптимизация панели производительности

При профилировании большой страницы панель «Производительность» раньше обрабатывала и визуализировала данные за десятки секунд. Нажатие на событие для получения дополнительной информации о нём на вкладке «Сводка» также иногда занимало несколько секунд. Обработка и визуализация выполняются быстрее в Chrome 70.

Обработка и загрузка данных о производительности.

Рисунок 5. Обработка и загрузка данных о производительности

Более надежная отладка

В Chrome 70 исправлены некоторые ошибки, из-за которых точки останова исчезали или не срабатывали.

Он также исправляет ошибки, связанные с картами исходного кода. Некоторые пользователи TypeScript указывали DevTools игнорировать определённый файл TypeScript при пошаговом выполнении кода, но вместо этого DevTools игнорировал весь упакованный файл JavaScript. Эти исправления также устраняют проблему, из-за которой панель «Источники» работала медленно.

Включить регулирование сети из меню команд

Теперь вы можете настроить ограничение сети на быстрый 3G или медленный 3G из меню команд .

Команды регулирования сети в меню команд.

Рисунок 6. Команды регулирования сети в меню команд

Автодополнение условных точек останова

Используйте интерфейс автозаполнения для более быстрого ввода выражений условных точек останова.

Интерфейс автозаполнения

Рисунок 7. Интерфейс автозаполнения

Знаете ли вы? Интерфейс автозаполнения стал возможен благодаря CodeMirror , который также поддерживает консоль.

Перерыв на событиях AudioContext

Используйте панель « Точки останова прослушивателя событий» , чтобы остановить выполнение на первой строке обработчика событий жизненного цикла AudioContext .

AudioContext является частью API веб-аудио, который можно использовать для обработки и синтеза звука.

События AudioContext на панели точек останова прослушивателя событий.

Рисунок 8. События AudioContext на панели точек останова прослушивателя событий

Отладка приложений Node.js с помощью ndb

ndb — это новый отладчик для приложений Node.js. Помимо стандартных функций отладки, доступных через DevTools , ndb также предлагает:

  • Обнаружение и присоединение к дочерним процессам.
  • Размещение точек останова перед требуемыми модулями.
  • Редактирование файлов в пользовательском интерфейсе DevTools.
  • По умолчанию все скрипты за пределами текущего рабочего каталога игнорируются.

Пользовательский интерфейс ndb.

Рисунок 9. Пользовательский интерфейс ndb

Более подробную информацию можно узнать в файле README ndb .

Дополнительный совет: измеряйте реальные взаимодействия пользователей с помощью API User Timing

Хотите узнать, сколько времени требуется реальным пользователям для завершения критически важных действий на ваших страницах? Рассмотрите возможность использования API User Timing для вашего кода.

Например, предположим, что вы хотите измерить время, которое пользователь проводит на вашей главной странице, прежде чем нажать кнопку призыва к действию (CTA). Сначала вы отмечаете начало пути в обработчике событий, связанном с событием загрузки страницы, например, DOMContentLoaded :

document.addEventListener('DOMContentLoaded', () => {
  window.performance.mark('start');
});

Затем вы отметите конец путешествия и рассчитаете его продолжительность на момент нажатия кнопки:

document.querySelector('#CTA').addEventListener('click', () => {
  window.performance.mark('end');
  window.performance.measure('CTA', 'start', 'end');
});

Вы также можете извлечь свои измерения, что упрощает отправку их в вашу аналитическую службу для сбора анонимных, агрегированных данных:

const CTA = window.performance.getEntriesByName('CTA')[0].duration;

DevTools автоматически отмечает ваши измерения пользовательского времени в разделе «Пользовательское время» ваших записей выступлений.

Раздел «Пользовательское время».

Рисунок 10. Раздел «Пользовательское время»

Это также полезно при отладке или оптимизации кода. Например, если вы хотите оптимизировать определённый этап жизненного цикла, вызовите window.performance.mark() в начале и в конце функции жизненного цикла. React делает это в режиме разработки.

Загрузите предварительные версии каналов

Рассмотрите возможность использования Chrome Canary , Dev или Beta в качестве браузера по умолчанию для разработки. Эти предварительные версии предоставят вам доступ к новейшим функциям DevTools, позволят тестировать передовые API веб-платформ и помогут вам находить проблемы на сайте раньше, чем это сделают ваши пользователи!

Свяжитесь с командой Chrome DevTools

Используйте следующие параметры для обсуждения новых функций, обновлений или чего-либо еще, связанного с DevTools.

Что нового в DevTools

Список всего, что было рассмотрено в серии «Что нового в DevTools» .

,

Kayce Basques
Kayce Basques

Welcome back! It's been about 12 weeks since our last update, which was for Chrome 68. We skipped Chrome 69 because we didn't have enough new features or UI changes to warrant a post.

New features and major changes coming to DevTools in Chrome 70 include:

Read on, or watch the video version of this doc:

Live Expressions in the Console

Pin a Live Expression to the top of your Console when you want to monitor its value in real-time.

  1. Click Create Live Expression Create Live Expression . The Live Expression UI opens.

    The Live Expression UI

    Figure 1 . The Live Expression UI

  2. Type the expression that you want to monitor.

    Typing Date.now() into the Live Expression UI.

    Figure 2 . Typing Date.now() into the Live Expression UI

  3. Click outside of the Live Expression UI to save your expression.

    A saved Live Expression.

    Figure 3 . A saved Live Expression

Live Expression values update every 250 milliseconds.

Highlight DOM nodes during Eager Evaluation

Type an expression that evaluates to a DOM node in the Console and Eager Evaluation now highlights that node in the viewport.

After typing document.activeElement in the Console a node is highlighted in the viewport.

Figure 4 . Since the current expression evaluates to a node, that node is highlighted in the viewport

Here are some expressions you may find useful:

  • document.activeElement for highlighting the node that currently has focus.
  • document.querySelector(s) for highlighting an arbitrary node, where s is a CSS selector. This is equivalent to hovering over a node in the DOM Tree .
  • $0 for highlighting whatever node is currently selected in the DOM Tree.
  • $0.parentElement to highlight the parent of the currently-selected node.

Performance panel optimizations

When profiling a large page, the Performance panel previously took tens of seconds to process and visualize the data. Clicking on a event to learn more about it in the Summary tab also sometimes took multiple seconds to load. Processing and visualizing is faster in Chrome 70.

Processing and loading Performance data.

Figure 5 . Processing and loading Performance data

More reliable debugging

Chrome 70 fixes some bugs that were causing breakpoints to disappear or not get triggered.

It also fixes bugs related to source maps. Some TypeScript users would instruct DevTools to ignore a certain TypeScript file while stepping through code, and instead DevTools would ignore the entire bundled JavaScript file. These fixes also address an issue that was causing the Sources panel to generally run slowly.

Enable network throttling from the Command Menu

You can now set network throttling to fast 3G or slow 3G from the Command Menu .

Network throttling commands in the Command Menu.

Figure 6 . Network throttling commands in the Command Menu

Autocomplete Conditional Breakpoints

Use the Autocomplete UI to type out your Conditional Breakpoint expressions faster.

The Autocomplete UI

Figure 7 . The Autocomplete UI

Did you know? The Autocomplete UI is possible thanks to CodeMirror , which also powers the Console.

Break on AudioContext events

Use the Event Listener Breakpoints pane to pause on the first line of an AudioContext lifecycle event handler.

AudioContext is part of the Web Audio API, which you can use to process and synthesize audio.

AudioContext events in the Event Listener Breakpoints pane.

Figure 8 . AudioContext events in the Event Listener Breakpoints pane

Debug Node.js apps with ndb

ndb is a new debugger for Node.js applications. On top of the usual debugging features that you get through DevTools , ndb also offers:

  • Detecting and attaching to child processes.
  • Placing breakpoints before modules are required.
  • Editing files within the DevTools UI.
  • Ignoring all scripts outside of the current working directory by default.

The ndb UI.

Figure 9 . The ndb UI

Check out ndb's README to learn more.

Bonus tip: Measure real world user interactions with the User Timing API

Want to measure how long it takes real users to complete critical journeys on your pages? Consider instrumenting your code with the User Timing API .

For example, suppose you wanted to measure how long a user spends on your homepage before clicking your call-to-action (CTA) button. First, you would mark the beginning of the journey in an event handler associated to a page load event, such as DOMContentLoaded :

document.addEventListener('DOMContentLoaded', () => {
  window.performance.mark('start');
});

Then, you would mark the end of the journey and calculate its duration when the button is clicked:

document.querySelector('#CTA').addEventListener('click', () => {
  window.performance.mark('end');
  window.performance.measure('CTA', 'start', 'end');
});

You can also extract your measurements, making it easy to send them to your analytics service to collect anonymous, aggregated data:

const CTA = window.performance.getEntriesByName('CTA')[0].duration;

DevTools automatically marks up your User Timing measurements in the User Timing section of your Performance recordings.

The User Timing section.

Figure 10 . The User Timing section

This also comes in handy when debugging or optimizing code. For example, if you want to optimize a certain phase of your lifecycle, call window.performance.mark() at the beginning and end of your lifecycle function. React does this in development mode.

Download the preview channels

Consider using the Chrome Canary , Dev , or Beta as your default development browser. These preview channels give you access to the latest DevTools features, let you test cutting-edge web platform APIs, and help you find issues on your site before your users do!

Get in touch with the Chrome DevTools team

Use the following options to discuss the new features, updates, or anything else related to DevTools.

What's new in DevTools

A list of everything that has been covered in the What's new in DevTools series.