Пульс веб-платформы 13.12.2024


Новости

  • вышла новая версия Safari 18.2:
    • поддержано свойство text-box (text-box-trim + text-box-edge) для «подрезки» вертикальных отступов у тестовых строк
    • @view-transition заработал не только в пределах одного документа, но и между разных страниц
    • из беты вышел background-clip: border-area для маскирования рамки низлежащим слоем; в calc теперь работает деление на единицы измерения calc(100vw / 1px)
    • поддержаны scrollbar-width и scrollbar-gutter для стилизации скроллбаров
    • добавлена функция Scroll to Text Fragments
    • поддержан <input type=week>
    • у PointerEvent появились методы getPredictedEvents() и getCoalescedEvents() для предсказания будущих позиций курсора и получения нескольких сгруппированных PointerEvent в pointermove
    • поддержан Promise.try
  • в Mozilla представили новый брендинг с консольным динозавром-флажком, а также наняли три новых топа: в Firefox выходят вице-президент FF и вице-президент по продукту FF, а также в компании появился вице-президент по инфраструктуре; в общем, кажется готовятся, что у Google (с возможной продажей Chrome) дела могут пойти плохо и тогда лишатся финансирования, придётся поднимать флаг и самостоятельно расправлять паруса
  • CSSWG подытоживают год и выкатывают 4 новых FPWD: Display 4, Overflow 5, Multicol 2 и Color HDR 1, из интересных нововведений:
    • reading-flow для управления порядком чтения контента скринридером в flex- и grid-контейнере
    • интерполяция и анимация свойства display
    • псевдоэлемент ::column в многоколоночном контейнере
    • свойство scroll-marker-group и группа псевдоэлементов ::scroll-marker-* для стилизации скролл-контейнера
    • управление яркостью HDR-контента
  • вышел отчёт Cloudflare Radar 2024:
    • HTTP/2 вдвое опережает HTTP/3
    • React, Next.js — самые популярные фреймворки
    • PHP вдвое популярнее Node.js
    • для создания API Go используется чаще Node.js
    • Yandex — второй по популярности поисковик — подсдал к концу года
    • сради браузеров Chrome держится на 65%, потом идёт Safari, Edge, а у Forefox 4% пользователей
    • IPv4 всё ещё доминирует над IPv6
    • в развитых странах преобладает десктопный трафик, в Африке, Индии, Южной Америке — мобильный

Проекты

  • skia-canvas — «безбраузерная» реализация API canvas для node или десктопа на GPU
  • html-react-parser — парсер HTML в React-компонент

Статьи и демки

JS

  • общение компонентов посредством создания и запуска событий помогает избежать проп-дриллинга или связывает (не увеличивая coupling) совсем разнесённые части одной системы; есть простой вариант хука useEvent, который создаёт эвент и отдаёт диспатчер или более сложный в виде шины событий, о котором писал ранее
  • порой бывает нужно сделать небольшой проект, куда тянуть React не обязательно, и в таком случае не обязательно тянуть и бандлер вместе с процессом билда:
    • для локального сервера и HMR сгодится browser-sync, сторонние пакеты можно загрузить с  unpkg.com или из npm и прописать алиасы в <script type="importmap">
    • правда не все пакеты, к сожалению, можно просто брать и использовать в сбилженном виде, некоторые, например, lodash-es, придётся сбилдить самостоятельно с помощью esbuild
    • TS заменяется на JS с JSDoc, а с помощью tsc код проверяется на соответствие типов
  • в ref элемента в React можно передать функцию, в параметре которой будет DOM-нода и в React 19 ref-функция теперь может возвращать cleanup-функцию, как в useEffect
  • вслед за React 19 вышел Next 15.1 со свежим React на борту (для Pages Router по-прежнему доступен React 18), улучшен дебаг ошибок, обещают, что найти место ошибки теперь стало проще

CSS

  • в бете Tailwind 4 был представлен механизм стилизации дочерних элементов из заданного варианта родителю <div class="**:data-avatar:rounded-full"> (все дочерние элементы с атрибутом data-avatar будут скруглёнными), что дизраптит саму идею атомарных классов, помещая в classname «мета-CSS» и открывая возможность использовать фреймворк ещё более противоестественно, приближая его конец
  • с тех пор, как иконочные шрифты стали считаться анти-паттерном, технологии пошли вперёд: появились вариативные и цветные COLR шрифты, хорошо сжимающий формат woff2 и font-display стали повсеместно поддерживаемыми, content стал поддерживать alt-текст для скринридеров, да и проекты вроде Font Awesome по-прежнему популярны; но тем не менее шрифт может не загрузиться или может быть проигнорирован системными настройками браузера, поэтому SVG — всё ещё предпочтительный вариант для иконок в вебе
  • color: lch(from var(--bg) calc((49.44 - l) * infinity) 0 0) автоматически меняет цвет текста с чёрного на белый в зависимости от цвета фона

Платформа

  • в девтулзах Chrome 131 теперь помечаются те анимации, для которых не задействовался процесс «композиции», например, в случае анимации свойства height или кастомного свойства
  • база, которая мне близка: если знаешь особенности платформы, базового языка (JS, CSS, HTML) и браузеров, то тогда становится легче кастомизировать вещи в рамках фреймворков, находить баги и фиксить их, решать проблемы и задачи легче и элегантнее, всем платформенным респект!