Пульс веб-платформы 24.01.2025
Новости
- вышла версия Tailwind 4.0: как уже писал раньше, TW впитывает фичи платформы (что хорошо), но по-прежнему запихивает всё в
className, при этом есть и вариант с добавлением «миксинов» с помощью директив@apply,@variant(что в целом ни хорошо, ни плохо, а уже было в SASS) - поисковая страница Google теперь может требовать у пользователя включить JS, что само по себе ок мув, как и то, что сейчас SPA-страницы индексируются тоже уже ок на равне со статическими
- вышла первая бета Rolldown — замены Rollup + esbuild для Vite: переписанный на Rust новый бандлер Rolldown помимо обратно-совместимого API будет иметь в будущем ещё и фичи, которые Rollup не поддерживает: аналог webpack-овского
optimization.splitChunks, HMR, а так же Module Federation - выпущен Vitest 3.0:
- доработан вывод репортов в консоль (стало выглядеть приятнее)
- при наличии нескольких проектов, теперь удобно конфигурировать это в поле
workspaceвvitest.config - добавлена поддержка конфигурации нескольких браузеров, чтобы использовать один сервер для прогона тестов сразу в нескольких браузерах
- запуск теста по номеру строки в файле, где он написан
- в Chrome 133+ появится поддержка обновлённой функции
attr(), которая раньше работала только внутри свойстваcontent, а теперь сможет работать с любым свойством:
<div data-foo="blue">test</div>div { color: attr(data-foo type(<color>), red);}- вышло январское обновление React Spectrum/Aria:
- в компоненте дейт-пикера и календаря добавлен проп
firstDayOfWeek - добавлены CSS-транзишны для оверлеев
Modal,Popover,Tooltip - выпущена альфа-версия компонента
Autocompleteи @react-aria/test-utils — либы с тест-утилитами для компонентов
- в компоненте дейт-пикера и календаря добавлен проп
Проекты
- ohshitgit — набор кейсов, когда у вас случилось что-то нехорошее в git, и как это вернуть взад
- fortune-sheet — либа
React/Vue+immerна TS для создания Excel-like-таблиц - arktype — рантайм валидатор, инферит TS-типы, быстрый
Статьи и демки
JS
- React Query — это не data-fetching-либа, а менеджер состояния, которое живёт на сервере; именно поэтому, если источник правды вашего приложения сохраняется на бэке, то React Query заменяет собой необходимость использования отдельного стейт-менеджера на клиенте
- все либы для работы с хоткеями опираются на задепрекейченные поля, поэтому использовать их нужно осторожно; если ли работать с хоткеями без либ, то нужно использовать поле
key, латинские буквы (A-Z) и арабские цифры (0-9), нормализовывать символ с помощью.toLowerCase()и.toUpperCase(), использоватьShiftдля модификации и не использовать для неёAlt - фишки динамических строковых литералов в TS:
// ключиinterface User { customerKey: `cus_${string}`;}
// версияtype Version = `v${number}.${number}.${number}`;
// расширениеtype ImageExtension = `png` | `jp${`e` | ``}g` | `webp`;- опыт миграции стейта с
useContextна MobX: всё ништяк, но пришлось писать свою обёртку для использованияuseQueryиз TanStack Query - разложенный по косточкам tsconfig с вариациями: база, npm-пакет, Node.js, web, запуск ts напрямую (без js), только тайпчекинг
CSS
- ежегодная подборка свежих CSS-фич, которые можно уже использовать: всё, что касается
<dialog>иpopover, конечно, только для внутренних проектов сгодится, а вот применение@propertyиlinear()для анимаций, которые не страшно, если отвалятся, уже прям маст-хэв - напоминание, что ссылки не только на
#якорь, но и на определённый текстовый фрагмент на странице (а заодно и стилизация выделенного текста по::target-text) уже работают по всех современных браузерах, для некритичных вещей точно можно тащить в прод - современные CSS-фичи типа
@container(),@container style(),@supportsдают возможность старгетироваться на конкретное устройство и это приводит к возможности злонамеренного отслеживания типа устройства, ОС, почтового клиента: решение — предзагружать все «условные» ассеты (картинки, шрифты) заранее, а не только те, которые «подходят» устройству
HTML
- вместо использования
role=button,role=linkи остальных проще использовать соответствующий HTML-элемент
Платформа
- множественные редиректы на открытии страницы могут влиять в негативную строну на метрики перфоманса LCP и FCP