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

15 ИЮНЯ 2022

------------------------------------------------------------------------

Наш телеграм-канал: t.me/@mailsgun_online

Youtube: youtube.com/@mailsgun_online

------------------------------------------------------------------------

Обновить

вчера в 14:28

Это просто превью, не высматривайте тут интересного)
Это просто превью, не высматривайте тут интересного)

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
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Интереса ради — о чём из этого вы узнали впервые?

43.75%
Переопределение const
42

27.08%
Grid редактор
26

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

35.42%
Копирование всех свойств в один клик
34

26.04%
Debugger и просмотр Scope
25

21.88%
Редактирование юзер-агента
21

32.29%
DOM-брекпоинты
31

29.17%
Эмуляция сенсора
28

37.5%
Групировка computed свойств
36
Проголосовали 96 пользователей.
Воздержались 18 пользователей.
Всего голосов 8: ↑7 и ↓1+6

Просмотры3.5K

  • вчера в 18:48
    Всего голосов 55: ↑50 и ↓5+45

    Просмотры6.8K

  • вчера в 14:19
    Всего голосов 47: ↑46 и ↓1+45

    Просмотры12K

  • вчера в 12:00
    Всего голосов 37: ↑34 и ↓3+31

    Просмотры3.7K

  • вчера в 13:37
    Всего голосов 26: ↑26 и ↓0+26

    Просмотры3.4K

  • вчера в 12:15
    Всего голосов 23: ↑23 и ↓0+23

    Просмотры3.1K

Source: habr1

Ну и напоследок напоминаю вам о нашем новом проекте vkserfing bot.