Пульс веб-платформы 22.03.2024
Новости
- вышел Astro 4.5: новая встроенная панель аудита сайта, по View Transitions теперь можно перерендерить интерактивные части сайта, обновлён хайлайтер синтаксиса для блоков кода Shiki, поддержка отдельных CDN для разных типов файлов (и заодно ребята отпраздновали 3 года проекта)
- вышел Firefox 124: добавлена поддержка
AbortSignal.any,::first-letterи::first-lineтеперь работают для SVG<text>,content-visibility: autoвключено по умолчанию (скорость отрисовки сайтов станет быстрее) - что будет, если вместе соберутся создатель и бывший CEO npm, инжиниринг-менеджер из Github и npm и разработчик из Google? Они попробуют создать более лучший пакетный менеджер (JSR был только началом)!
- выпущен vitepress — генератор статических сайтов из md на vue и vite: изначально генерится статика SSG, а после загрузки инициализируется SPA для дальнейшей навигации по сайту
Проекты
- madge — анализ и нахождение циклических зависимостей в проекте, а также постройка визуального графа зависимостей
- shiki — стильный хайлайтер кода в браузере + если вы читали документацию по TS на сайте TS, то наверняка запомнили примеры кода с тултипами-аннотациями, в которых показываются «скомпиленные» подсказки: это реализовано с помощью twoslash, который работает в тандеме с shiki, а также бонусом библиотека анимирования кода из одного состояния в другой shiki-magic-move
- downshift — базовые примитивы, заложенные в хуки, для создания доступных выпадашек на React
- spectacle — либа для создания презентаций с помощью React и JSX
- modernfontstacks — наборы шрифтов (включая системные): показывается, какие шрифты используются сейчас в браузере, какие доступны и недоступны
Статьи и демки
JS
- автомемоизация React Compiler строится на том, чтобы при выводе типов понять какие значения — примитивы и не момойзить их; собственно, и без React Compiler примитивные значения мемойзить иногда вредно
- гайд по созданию анимаций с react spring: есть примеры с простыми и сложными анимациями, впрочем простые анимации можно собрать и на коленке на CSS, разве что в либе есть встроенные «пружинные» изинги
- сравнительная таблица наличия API в разных JS-рантаймах (кроме браузера): заодно освещён рантайм WinterJS, использующий для JS движок SpiderMonkey из FF
- мастеркласс по экономии на спичках в JS-коде, если всё остальное уже оптимизировано
- как настроить среду и TS для разработки Node-приложения
- шпаргалка по типизации в React-е: если вы когда-нибудь натыкались на заковыристую типизацию, она наверняка раскрыта в этой доке
CSS
- напоминание, что отступы
marginиpaddingнедопустимы в стилях агностик-UI-компонентов, вместо них нужно использоватьgap - свойство
contain, которое привносит новизну в вёрстку двухколоночного лейаута: сcontain: sizeможно «изолировать» лейаут одного элемента от всех остальных (как будтоposition: absoluteтолько в потоке), а также с помощьюcontain: layoutможно спозиционировать fixed элемент относительно родителя (но он перестанет бытьfixed!) - вместо
border: 0лучше писатьborder-color: transparent, чтобы не отрубать рамки для контрастного режима браузера (такое стоит делать хотя бы для@media (forced-colors: active)) - неочевидные стили для кнопок:
touch-action: manipulationдля отключения зума по двойному тапу,user-select: noneдля выключение выделения текста,::file-selector-buttonдля стилизации кнопки input file, аутлайн для фокуса не по клику с:focus-visible - значение
align-items: safe centerдля выравнивания элементов без риска обрезать их в случае появления скролла в контейнере - ликбез по боксовой модели CSS, а также сброс неудобной дефолтной настройки
box-sizing: content-box - удобный дефолт для респонсив-размера шрифта
font-size: calc(1rem + 0.25vw)вместо дурацкого переключения по разрешениям
Платформа
- если ваша монорепа разрастётся до миллиона файлов, то скорее всего в ней начнёт тормозить git; если такое произошло, выхода два: распилить монорепу или перейти на Mercurial (как сделали ребята из компании на букву F)