Интересные публикации
Инженеры Airbnb выкатили статью о своем новом планировщике тасков postTask. Инструмент позволяет планировать операции в event loop браузера. Идея простая: идентифицировать длинный таск и разбивать его на таски меньше, при этом гибко приоретизируя. Пока postTask недоступен для широкого круга пользователей, потому что использует некоторые экспериментальные фичи, а полифилл пока не open-source. Но работа достаточно интересная, чтобы как минимум взглянуть.
Брайан Луис Рамирес (Brian Louis Ramirez) рассказал о Local Overrides — это фича Chrome DevTools, которая может временно подменить любой ресурс сайта. Например, в инструментах разработчика можно поправить какой-нибудь файл, добавить в Local Overrides, и при перезагрузке вместо оригинального файла будет использоваться его измененная версия. Фича крута для исследования влияния потенциальных оптимизаций, быстрых фиксов и экспериментов. Кстати, автор статьи поделился своим скриптом для сбора метрик.
Андрей Мелихов на канале Девшахта рассказал про Server-Sent Events API. Для чтения данных с сервера в реальном времени не обязательно использовать веб-сокеты. Для этой цели хорошо подходит Server-Sent Events API — технология, которая работает поверх HTTP, и позволяет создать однонаправленный канал связи. На клиенте используется класс EventSource, которому передается url сервера, а сервер передает данные с метаинформацией обычным текстом. Поддержка SSE есть во всех современных браузерах, а сама технология может пригодиться для решения узкоспециализированных задач.
Ещё одно видео об инструментах: Андрей Ситник и организатор IT-сообществ Нью-Йорка Кирилл Черкашин записали трансляцию про Logux — инструмент для синхронизации веб-клиентов и сервера. Рассматривали CRDT и Logux, а также новый стейт-менеджер Андрея logux/state. Поговорили не только про инструменты, также обсудили удаленку, open-source, стейт-менеджеры в целом и ответили на вопросы.
Анализ CSS-in-JS библиотек опубликовал на css-tricks Андрей Пфайфер (Andrei Pfeiffer). Рассматривается 10 библиотек, среди которых Styled JSX, styled-components, JSS, Compiled и другие. Сначала автор анализирует общие для всех десяти библиотек фичи, а затем переходит к различиям. Здесь он уделяет внимание более сложным фичам: фреймворко-специфичности, методу применения стилей, синтаксису и расположению стилей, а также генерации итогового CSS. Как итог — короткое заключение с вопросами, на которые нужно ответить при переходе на CSS-in-JS решение.
Барри Поллард (Barry Pollard) рассказал про новые CSS-дескрипторы директивы @font-face, которые помогают бороться с layout shift. Сдвиг как раз часто возникает из-за font-display:swap. Для решения этой проблемы придумали использовать Font Loading API и сопоставлять метрики резервного шрифта с метриками загружаемого шрифта. Метод работает, но он далеко не самый удобный. В рамках новой спецификации CSS Fonts Module добавили новые дескрипторы, которые должны помочь избежать непредсказуемых сдвигов контента. Это size-adjust, descent-override, line-gap-override, advance-override. Большая часть из них уже поддерживается браузерами.
Тобиас Гюнтер (Tobias Günther) вернулся на SmashingMagazine со второй частью статьи об устранении ошибок в git. В этой части он рассказывает, как восстановить удаленную ветку, как перенести в другую ветку коммит, отредактировать сообщение в старом коммите и как внести изменения в коммит более элегантным способом, чем созданием кучи маленьких коммитов с фиксами.
Завершает рубрику наглядное пособие по работе DOM: domevents.dev. На интерактивной схеме можно посмотреть на DOM-события в работе и получить справочную информацию.
Новости релизов
Вышел Chrome 91. Пит Лепейдж (Pete LePage) и Джеселин Йин (Jecelyn Yeen) сделали обзор новинок браузера и DevTools. В десктопной версии Chrome было добавлено API для доступа к файлам из буфера обмена. В File System Access API добавлены новые опции. Появилась полноценная поддержка Web Assembly SIMD. У фавиконок теперь есть атрибут media, он помогает менять иконку сайта в зависимости от текущей темы ОС. В DevTools появился инструмент для визуальной отладки scroll-snap. Для анализа ArrayBuffer и памяти WebAssembly был добавлен инспектор памяти. Появилась опция для тестирования Content-Encoding.
TypeScript 4.3 прибыл. С выхода релиз-кандидата в принципе ничего не изменилось: появилась поддержка различных типов для геттеров и сеттеров, ключевое слово override, улучшение типизации шаблонных строк и промисов, поддержка приватных полей класса и улучшение типизации статических полей класса.
Бандлер Parcel 2 движется к выпуску мажорной версии. Вышла третья бета. Вообще, в новой версии Parcel полностью переписали компилятор JS на Rust, что сделало его, по словам авторов, в 10 раз быстрее, также были улучшены tree shaking JS и CSS-модулей и добавлена ленивая загрузка dev-сборки. Посмотрим, как покажет себя Parcel после полноценного релиза.
Другой бандлер — Vite — отметился небольшим релизом. Фича всего одна — теперь Vite умеет сёрвить index.html в режиме миддлвары. Кроме того, подъехала пачка багфиксов.
Также отмечу релизы nginx 1.20.1 и 1.21.0 с устранением уязвимости.
Другие новости
Похоже, команда Flow окончательно признала поражение на полях open-source боя. Разработчики рассказали, что теперь еще больше сосредоточатся на внутренних нуждах Facebook. Как следствие, скорее всего, на внешние коммиты и сообщество будут обращать всё меньше внимания, а продукт начнет всё меньше подходить для решения нужд разработчиков вне Facebook. Посмотрим, как дальше будет развиваться проект.
Утверждена дата прекращения поддержки браузера Internet Explorer. Это произойдет 15 июня 2022 года. Я очень надеюсь, что вы и так уже давно не поддерживаете IE на своих проектах, а если поддерживаете — это знак, что пора заканчивать.