Как стать автором
Обновить

Не очень известные возможности Chrome Devtools

Разработка веб-сайтов *JavaScript *Программирование *Google Chrome
Это просто превью, не высматривайте тут интересного)
Это просто превью, не высматривайте тут интересного)

Chrome Devtools, безусловно, мощнейший инструмент для разработки, дебага, профайлинга и тестирования в браузере. С каждым релизом в него завозят всё новые и новые фичи. И время от времени на хабре выходят посты типа "10 крутых фишек Devtools". Но факт - то ли копирайтовый мир победил, то ли это не слишком интересная тема, но в большинстве случаев авторы описывают одни и те же возможности, которые существуют уже года 4. Мне кажется только ленивый сейчас не знает о console.time, о манипуляциях с анимациями, и о том что ветки DOM-дерева можно drag&drop-ать, и т. д.

Поэтому, позвольте же рассказать, какие интересные фичи знаю я. Вряд ли все они станут откровением, но знают о них точно не все.

Переопределение const

Те кто любят экспериментировать (или просто тестить всякую ерунду) в консоли devtools, наверняка сталкивались с проблемой - накидываешь код который использует const, тестишь - что-то не то. Правишь, enter - а const уже был определён, ошибка. Приходится перезагружать страницу, неудобно. Поэтому в последнем релизе в devtools отключили запрет на переопределение констант. Точнее - const работают как и прежде, но только в рамках одной REPL. Думаю, со скрином будет понятнее

Если запускаешь код в пределах одной команды - принцип работы const не изменился
Если запускаешь код в пределах одной команды - принцип работы const не изменился

Grid - редактор

При работе с гридами, на элементе с display: grid; появляется бейджик, с надписью grid. Кликаем по нему - видим визуализацию нашей грид-разметки, её рамки, размеры, и т. д. Очень облегчает понимание происходящего.

Для Flexbox-ов есть точно такая же фича
Для Flexbox-ов есть точно такая же фича

Скриншот DOM-узла

Когда я узнал о этой фишке - первой моей мыслью было "чёрт, как я жил без этого раньше?!". Всё элементарно - devtools позволяет сделать скриншот отдельно взятого DOM элемента. Фантастически удобно, когда надо сделать скрин какой-то определённой части сайта - например, сайдбара.

ПКМ, Capture node screenshot
ПКМ, Capture node screenshot
Пример результата
Пример результата

Удобное копирование CSS свойств

Не знаю, возможно это у меня руки неправильно заточены, но когда мне нужно было скопировать все css свойства - я выделял их мышкой, и вечно то промахнусь, то выделю не всё, и т. д.

Неудобно
Неудобно

Оказывается - всё давно уже придумано, достаточно в контекстном меню выбрать Copy all declarations!

Намного удобнее
Намного удобнее

Просмотр стейта JS кода без console.log-ов

Многие (я в том числе) дебажат js посредством вызовов console.log в нужных местах. При этом я слышал что есть какой-то debugger, и даже ставил его ради интереса - но изначально особо смысла не уловил. Оказывается же, это мощнейшая фича, которая позволяет смотреть состояние всех переменных в реальном времени. Покажу на примере

ключевое слово - debugger
ключевое слово - debugger

Теперь, при выполнении этого кода, когда интерпретатор дойдёт до debugger - выполнение остановится и автоматически откроется devtools с участком кода где произошла остановка. А справа, во вкладке scope, мы можем видеть все переменные в области видимости где установлен debugger, причём со всеми значениями.

x, i - обе переменные видны
x, i - обе переменные видны

Манипуляции с юзер-агентом

Когда-то мне было нужно изменять юзер-агент для тестирования, тогда я ставил какое-то стороннее расширение на хром. Сейчас же всё можно делать не выходя из дому из девтулзов.

Снизу нажимаем троеточие, там выбираем network conditions - тогда появится такой таб
Снизу нажимаем троеточие, там выбираем network conditions - тогда появится такой таб

Брекпоинты по изменению DOM-дерева

Совершенно лютая вещь, как по мне. Особенно когда надо найти что-то в диком легаси коде, где какая-то jQuery лапша что-то там меняет на фронте.

Теперь если какой-то код сделает изменения в любом элементе дерева - произойдёт эффект аналогичный с вызовом debugger. Точнее - остановка выполнения, и демонстрация участка кода который затриггерил дебаггер.

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

Эмуляция сенсорных касаний

При разработке чего-нибудь мобильного, нужно убедиться в том, что touch-events будут отрабатывать правильно. Это ведь на ПК у нас есть курсор, а на мобильных устройствах - сенсорный дисплей. Devtools умеет принудительно включать режим эмуляции тач-скрина, даже без перехода в мобильный режим представления

Выбираем Force enabled, и перезагружаем страницу
Выбираем Force enabled, и перезагружаем страницу

Группировка CSS свойств

Надеюсь, вкладка computed ни для кого не секрет. А вот секретом может быть опция group, которая группирует свойства по категориям - внешний вид, разметка, и т. д. Очень удобно, когда свойств дохрена. Хотя если нужно найти определённое, то быстрее всего будет использование фильтра

Слева без group, справа c
Слева без group, справа c
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Интереса ради — о чём из этого вы узнали впервые?
47.58% Переопределение const 118
19.76% Grid редактор 49
53.23% Скриншот DOM-узла 132
41.13% Копирование всех свойств в один клик 102
25.4% Debugger и просмотр Scope 63
25.4% Редактирование юзер-агента 63
36.69% DOM-брекпоинты 91
41.13% Эмуляция сенсора 102
41.53% Групировка computed свойств 103
Проголосовали 248 пользователей. Воздержались 39 пользователей.
Теги:
Хабы:
Всего голосов 24: ↑23 и ↓1 +22
Просмотры 14K
Комментарии Комментарии 22