ККатерина | Про Frontend

Катерина | Про Frontend

@katerina_profrontend💻 Технологии🇬🇧 English📅 март 2026 г.

⚡️ Пишу обучающие статьи по Frontend-разработке; ⚡️ Делюсь личным опытом, как профессионально, так и в личном формате. YouTube: https://www.youtube.com/@katerina_profrontend Life: https://t.me/life_nanivskaya Связь: @katrin_nanivskaya

📊 Полная статистика📝 Все посты
##036#39#id
3.1K
Подписчики
1.3K
Ср. охват
41.2%
Вовлечённость
17
Постов
~0.3
В день

Графики

📊 Средний охват постов

📉 ERR % по дням

📋 Публикации по дням

📎 Типы контента

Лучшие публикации

17 из 17
Kkaterina_profrontend
katerina_profrontend
27 дек., 11:30

Распределение условных типов и infer в TypeScript 🤩 В TypeScript условные типы по умолчанию распространяются по объединениям (A | B). Это часто полезно, но иногда приводит к неожиданным результатам. Простое и надёжное решение — спрятать параметр в кортеж: [T] extends [X] ? ... 🧩 Проблема: Условный тип вида T extends X ? A : B при подстановке T = A | B автоматически разбивается и проверяется для каждого члена объединения отдельно. Такой механизм называется distributive conditional types. type I...

👁 1.6K
Kkaterina_profrontend
katerina_profrontend
17 дек., 15:30

Cumulative Layout Shift: почему страница «прыгает» и как это остановить 🤓 Cumulative Layout Shift (CLS) — это метрика, которая показывает, насколько часто и насколько сильно элементы страницы неожиданно смещаются после первого рендера. Браузер для каждого такого сдвига оценивает, какая часть экрана была затронута и как далеко элементы уехали, а затем суммирует эти значения. В итоге CLS отражает не скорость загрузки, а стабильность интерфейса во времени. 📚 Откуда берётся CLS Почти всегда причин...

👁 1.6K📷 photo
Kkaterina_profrontend
katerina_profrontend
30 дек., 16:00

Сейчас все подводят итоги, и я долго думала — писать ли тоже. Чем честнее смотришь на год, тем легче принять: он был непростым для канала. Активность немного просела, многие планы отложились, а фокус всё чаще уходил в личные дела. Иногда просто не хватало времени и сил проявляться так, как хотелось — и это тоже часть истории, хотя принять это было непросто. 😒 Вместе с тем год подарил много хорошего: были разобраны интересные темы, снято несколько видео, а также получен важный опыт. 👏 Были публ...

👁 1.6K
Kkaterina_profrontend
katerina_profrontend
14 янв., 15:36

Как сделать «скрытый, но находимый» контент? 🔍 Представьте: у вас длинная страница с FAQ, аккордеонами и сворачиваемыми разделами. Пользователь нажимает Ctrl/Cmd+F, вводит слово — и... браузер ничего не показывает, потому что нужный текст спрятан в свернутом аккордеоне. Раздражает? 😔 Для таких случаев есть hidden="until-found" — атрибут, который позволяет визуально скрывать контент, но оставлять его доступным для поиска на странице. Если браузер находит совпадение, он автоматически раскрывает ...

👁 1.4K
Kkaterina_profrontend
katerina_profrontend
2 февр., 18:45

«Хочу стиль для p в header, но не хочу повышать специфичность» 😎 Иногда самая тривиальная задача — задать стиль для p внутри header — перерастает в бесконечную гонку селекторов. Вы пишете header p { … }, кто-то добавляет .text { … }, вы усложняете селекторы, и проект медленно погружается в «адские» веса CSS. 😞 К счастью, есть аккуратный и очень полезный приём — использовать :where() 🧩 Что делает :where(): :where() — это CSS-псевдокласс, который принимает список селекторов и всегда имеет нулев...

👁 1.3K
Kkaterina_profrontend
katerina_profrontend
25 дек., 18:04

Обработка комбинаций клавиш 🧑‍💻 Комбинация клавиш используют для обычных вещей: сохранить данные, перейти между экранами, ускорить работу. В JavaScript это реализуется довольно просто, если понимать, как работают события клавиатуры. Немного теории ✔️ Комбинация клавиш — это одно событие keydown, внутри которого мы проверяем: ⏺️ какую клавишу нажали; ⏺️ зажаты ли модификаторы (Ctrl, Shift, Alt, Meta); ✔️ В браузере нет отдельного события “Ctrl+S” — всё делается через условия. Ключевые свойства ...

👁 1.3K
Kkaterina_profrontend
katerina_profrontend
29 янв., 17:46

Связность и сцепленность: как написать код, который не боишься менять 🧩 Представьте проект как дом. Комнаты — это модули и компоненты. В хорошем доме каждая комната имеет своё назначение: кухня для готовки, спальня для сна, ванная для гигиены. Если в одной комнате стоит плита, кровать и стиральная машина, жить неудобно — это низкая связность: элементы внутри модуля занимаются разными вещами. 😏 Двери и коридоры — это интерфейсы и API между модулями. Хорошие двери простые и предсказуемые: можно ...

👁 1.3K📷 photo
Kkaterina_profrontend
katerina_profrontend
20 дек., 11:55

Когда нужен приоритет загрузки 🤔 Ленивая загрузка (loading="lazy") удобна: экономит трафик и ускоряет загрузку страницы за счёт отложенной загрузки картинок, которые пока не видны пользователю. Однако если вы не укажете приоритет для критичных картинок, браузер сам примет решение о порядке загрузки — а его алгоритмы могут не совпасть с вашими целями. ☹️ В результате изображение или шапка могут загрузиться позже, чем нужно: это ухудшит LCP и создаст ощущение «медленной» страницы; при отсутствии ...

👁 1.3K
Kkaterina_profrontend
katerina_profrontend
23 дек., 18:12

firstValueFrom vs lastValueFrom 🤨 В RxJS мы часто работаем с Observables — потоками данных. Иногда нужно получить одно значение из Observable как Promise, чтобы использовать async/await. Для этого есть firstValueFrom и lastValueFrom.😉 Немного теории: ✔️ firstValueFrom(obs$) — возвращает Promise, который резолвится при первом эмите и автоматически отписывается; ✔️ lastValueFrom(obs$) — возвращает Promise, который резолвится только после завершения Observable и содержит последний эмит ...

👁 1.2K
Kkaterina_profrontend
katerina_profrontend
19 янв., 16:21

INP: как измеряется отзывчивость страницы 🤨 Иногда сайт загружается быстро, контент появляется почти сразу, но пользоваться им всё равно не очень приятно. Клик срабатывает с задержкой, поле ввода реагирует не сразу, интерфейс как будто «думает». Формально всё загрузилось, но ощущение отзывчивости — так себе. 😥 Именно такие ситуации описывает INP (Interaction to Next Paint). INP — это метрика, которая показывает, насколько быстро интерфейс реагирует на действия пользователя. Она измеряет задерж...

👁 1.2K

Типы хуков

Нейтральный15 | 1.3K просм.
Вопрос1 | 1.4K просм.
Статистика1 | 1.0K просм.

Длина постов

Очень длинные (1000+)17 | 1.3K просм.

Типы контента

📷
2
photo
1.4K просм.
📝
15
text
1.2K просм.
Катерина | Про Frontend (@katerina_profrontend) — Telegram-канал | PostSniper