
Пульс веб-платформы 09.05.2025
Новости
- вышла Node v24.0.0 с обновлённым V8 и npm, теперь это версия Current (она станет LTS в октябре)
- судебное разбирательство с Google помимо продажи Chrome грозит лишить Firefox и Safari заработка, так как Google сейчас оплачивает выставленный в пользу Chrome поиск в этих браузерах по умолчанию (и если прекратит это делать, то лишит Mozilla 3/4 дохода); парадоксальная и грустная ситуация, что более здоровые конкурентные рыночные условия добьют FF
- в Figma анонсировали и выкатили новые фичи:
- внедрили гриды с растягиванием ячеек, гэпами и выравниванием
- добавили новые инструменты для рисования вектора (кисти, заливки, формы)
- добавили конвертацию макета в код и публикацию сайта прямо из Figma (но пока что есть вопросики к доступности получаемого результата)
- ну и конечно появилась генерация в макете «чего угодно» с AI
Проекты
- deepwiki — проект, позволяющий для любого публичного репозитория сгенерировать с помощью AI документацию по исходному коду (создаются даже схемы и диаграммы): например, дока mobx, react, linux; изучать новые либы стало ещё интереснее и проще
- operator-lookup — интерактивный туториал по операторам JS
- pyodide — порт CPython на WebAssembly/Emscripten, позволяющий запускать код на питоне в браузере/Node.js
- bhvr — а вот и попытка сделать просто работающий фуллстек-React-фреймворк, в который не нужно долго вкуривать, и он не залочен под конкретного вендора: под капотом Bun, Hono, Vite, React
- react-modal-sheet — неплохой UI-элемент выезжающей шторки под React
- color.js — либа для манипуляции с цветами от авторов спек (Lea Verou, Chris Lilley) и других уважаемых людей
Статьи, мнения, туториалы
JS/TS
- как организовать микрофронтенды с помощью Astro: каждый микрофронтенд организуется как отдельный Astro-сервер, с урлов всех микрофронтов получается HTML, а затем с помощью Server Islands организуется отложенная загрузка динамики каждого фронта (пример)
- и снова рубрика «что хотел сказать автор» от Дэна Абрамова, и снова про RSC: на примере того, как организован серверный и клиентский код в Astro, поясняется, что и как организовано в React; проблем сходу вижу две:
- в Astro разделение на сервер/клиент сходу понятное и простое как палка
- в React надо ещё уложить в голове, что компоненты по-умолчанию серверные, а могут быть клиентские, а на самом деле могут быть и такими, и такими
- пара человеческих статей о том, как по-разному устроена работа эвент лупа в браузерном JS и в Node.js
- как примерно устроен санитайзер HTML:
- берём сырой HTML,
- вставляем его в новый неактивный документ через DOMParser,
- затем пробегаемся рекурсивно по дочерним нодам, смотрим на соответствие их списку допустимых тегов, а также на нессылки в урлах ссылок или картинок,
- берём проверенные ноды, отбрасываем не прошедшие проверку
- возвращаем отфильтрованные ноды
CSS
- сборник юзкейсов новой функции
shape()
(ждём только FF в 141 версии), и заодно интро в блоге webkit: самый сок этой функции — это человекочитаемые команды внутри и возможность использовать переменные, чтобы делать формы респонсивными - хорошая фича margin-trim, которая подрезает лишние отступы детей, выезжающие за родителя, но поддерживается только в Safari, печаль
- утилитарный класс для установки
aspect-ratio
у картинок/видео, само соотношение сторон в переменной, чтобы задать извне:
[class*="aspect-ratio"] { --ratio: auto; object-fit: cover; aspect-ratio: var(--ratio);}
- подход к решению задачи показа/сокрытия боковых фейдов при скролле (в начале скролла фейд скрыт со стороны начала скролл-контейнера, в конце — со стороны конца контейнера): обычно это решается через JS, но здесь приводится решение через скролл-анимации, когда в зависимости от кейфрейма, переменная обнуляется или задаётся значением:
@keyframes scrollfade { 0% { --left-fade: 0; } 10%, 100% { --left-fade: 3rem; } 0%, 90% { --right-fade: 3rem; } 100% { --right-fade: 0; }}
Платформа
- вот уже пошли первые фантазии на тему AI-мидлвар в стейт-менеджерах на фронте: типа вместо написания конкретной логики делегируем разрешение конфликтов, мемоизацию и префетч умной плослойке в виде AI-модели (уходим от кодоцентричной разработки к описанию поведения на естественном языке)
- часто мы не пишем чистый код, потому что торопимся успеть до дедлайна, перегружены или не хотим трогать, чтобы не поломалось; но в целом, если устраивать «партизанский» рефакторинг, ревьюить самого себя до отправки на общественное ревью и представлять, что скажет «будущий я» по поводу этого кода, то код точно станет получше