<legend> сложно кастомизировать, а дизайн часто требует большего контроля. В этой подборке — CSS-приём, который повторяет поведение <fieldset>/<legend> без использования нативных тегов.
Разберём:
— как «разрезать» рамку без position и клиппинга
— как использовать CSS Grid как схему геометрии
— зачем здесь ::before и ::after
— почему заголовок остаётся центрированным даже при переносах
— какие ограничения и варианты есть у подхода
#readme #css
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8🥰3🥱2
Компиляция обычно означает ожидание. Turbopack меняет подход: сборка ускоряется не за счёт оптимизаций, а за счёт того, что выполняется меньше вычислений.
Большинство систем:
• используют кеш на уровне файлов
• пересобирают крупные части графа
• замедляются по мере роста проекта
Инкрементальность сложна и опасна при плохой реализации, но без неё быстрый dev-loop невозможен.
В основе — автоматическое тонкое кеширование:
• система отслеживает не файлы, а результаты вычислений
• пересчитываются только реально затронутые части
• если результат не изменился — цепочка пересборки обрывается
Все данные внутри Turbopack представлены как value cells:
• файлы
• AST
• метаданные модулей
• информация о чанках и tree shaking
Зависимости фиксируются только в момент чтения данных, что даёт более точный кеш, чем ручные dependency graphs.
При изменении файла:
1. связанные ячейки помечаются как dirty
2. пересчёт идёт снизу вверх по графу
3. выполнение откладывается, пока результат реально не нужен
Для работы с огромными графами Turbopack использует отдельный агрегационный граф, который ускоряет:
• сбор ошибок и предупреждений
• ожидание завершения подграфов
• планирование пересчётов
Начиная с Next.js 16.1:
• кеш сохраняется на диск
• dev-сервер стартует из «тёплого» состояния
• промежуточные результаты не теряются при перезапуске
#under_hood
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰3👍2🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Unit-тесты ломаются не из-за рефакторинга, а потому что тестируют не то. Этот гайд — про практику, которая даёт уверенность, а не просто проценты coverage.
Ключевые идеи:
• тестировать поведение, а не внутреннюю реализацию
• мокать границы системы, а не внутренние слои
• не бояться in-memory баз вместо сложных моков
• понимать, когда 100% coverage помогает, а когда вредит
если можно спокойно деплоить в пятницу вечером — тесты написаны правильно
#read_watch
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🥰2🔥1
const dedupeByLast = (arr, key) => [...new Map(arr.map(o => [o[key], o])).values()];
Что делает:
— Для каждого key оставляет последний объект
— Порядок результата — по первому появлению ключа в массиве (ключи не «переносятся» в конец при перезаписи)
— O(n), без вложенных циклов
— Детерминированное правило: последнее обновление победило
— Отлично подходит для merge обновлений / событий
Когда использовать:
— события/метрики, где важен последний статус
— merge обновлений по ключу
— синхронизация списков с «перепришедшими» объектами
⚠️ Если o[key] бывает undefined/null, такие элементы схлопнутся в один (останется последний).
#readme #js
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🥰3
Middle Frontend-разработчик — от 120 000 до 170 000 ₽, удаленно (Москва)
Разработчик React / TypeScript — от 180 000 до 300 000 ₽, офис/гибрид (Москва)
Junior Frontend — 122 000 ₽, офис (Питер)
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3❤2🥰2
→ меньше null-проверок, стабильнее SSR
→ появился fallback
useFormData(formRef, selector, { fallback: '' })
→ единая фабрика хуков
→ полная type inference
→ FormOptionsProvider помечен deprecated
→ getConstraints вместо getZodConstraint / getValibotConstraint
#release_digest
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🥰2
В Chrome Canary появился новый
<meta name="text-scale"> — первый шаг к тому, чтобы сайты начали уважать системный размер текста на мобильных устройствах.В карточках — разбор, почему фичу сделали opt-in, как она работает и что стоит учитывать уже сейчас, даже если поддержка ещё за флагом.
#under_hood
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9🥰2
This media is not supported in your browser
VIEW IN TELEGRAM
Интересный концепт выпадающего меню с псевдо-3D эффектом и ощущением глубины.
HTML — структура меню
CSS — градиентные фоны и 3D-трансформации для создания глубины (поворот элементов, перспектива, сохранение 3D-пространства)
JavaScript + jQuery Makisu — эффект «складывания» пунктов, как гармошка
#readme
Please open Telegram to view this post
VIEW IN TELEGRAM
😁5🥱3👍2🥰1
— TypeScript окончательно стал стандартом: типы можно отключать, и код запускается нативно в стабильном Node.js
— Vite обогнал Webpack по загрузкам и фактически стал основным сборщиком
— Влияние AI резко выросло: к концу 2025 года около 30% кода пишется с помощью ИИ
— Быстро растут инструменты: Cursor, Zed, Claude, Gemini, Copilot
#release_digest
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5🤔3🥰2👾1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12😁6
curl -I https://site.com | grep -i content-encoding
• br / gzip → HTML сжимается, всё ок
• пусто → HTML летит без сжатия
— Lighthouse зелёный
— JS/CSS сжаты
— страница всё равно «тяжёлая»
Часто причина — несжатый HTML (особенно при SSR).
curl -sH "Accept-Encoding: identity" https://site.com | wc -c
curl -sH "Accept-Encoding: gzip" https://site.com | wc -c
Если разница в 2–5 раз — сжатие критично.
— Content-Encoding: br или gzip
— Vary: Accept-Encoding
#readme
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4👍2❤1