Веб-страница
22.2K subscribers
2.16K photos
559 videos
2 files
4.43K links
Всё по фронтенду, бэкенду и девопсу в одном месте

Разместить рекламу: @tproger_sales_bot

Правила общения: https://tprg.ru/rules

Другие каналы: @tproger_channels

Сайт: https://tprg.ru/site

Регистрация в перечне РКН: https://tprg.ru/64ai
Download Telegram
Почему RegExp.escape превращает foo-bar в строку с hex-escape

Вы собираете регулярное выражение из строки поиска и хотите искать её буквально. RegExp.escape экранирует строку для вставки в шаблон.

У foo-bar первая буква превращается в \x66, а дефис — в \x2d. Экранирование первой буквы не даёт ей слиться с предшествующей escape-последовательностью. Для дефиса нужен hex-escape, потому что простой обратный слеш перед ним вне класса символов недопустим в Unicode-режиме.

На карточке — выполненный пример в Node 24.19.0. Регулярное выражение совпадает с foo-bar и отвергает fooXbar. API предназначен для буквального поиска. Он не очищает HTML и не защищает от всех опасных regex. Для старых сред нужна проверка наличия API или подходящий полифил.

📎 Правила экранирования в MDN.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
Selector Stats помогает разбирать затраты на Recalculate Style

По длительности события Recalculate Style в Performance trace ещё нельзя понять, какой селектор стоит менять. Для этого в DevTools есть Selector Stats.

До записи включите Enable CSS selector stats, повторите проблемный сценарий и откройте событие пересчёта стилей. Elapsed показывает время сопоставления, Match Attempts — число попыток, Match Count — число совпадений. Большое число попыток само по себе не доказывает, что селектор тормозит страницу.

После правки повторите тот же сценарий и сравните длительность. Затем отключите сбор статистики: он добавляет накладные расходы.

📎 Порядок записи и чтения Selector Stats.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥1