Интересные публикации
Первый материал выпуска — цикл статей о работе браузера от Ника Мостового. Пока есть 3 части: о рендеринге страницы, методах оптимизации и об Event Loop и очереди рендеринга.
Диего Хаз (Diego Haz) написал статью о принципах разработки базовых компонентов. «Базовый компонент» — это фундаментальная часть приложения, спроектированная по определенным правилам, что помогает легко масштабировать кодовую базу и не усложнять поддержку. Правила следующие: компонент рендерит один элемент, при возникновении исключения в компоненте всё приложение не должно упасть, рендерятся все HTML-атрибуты, применяются стили, передаваемые как пропсы, компонент добавляет все переданные ему обработчики событий. Неплохо, можно применять и с фреймворками, и при разработке библиотек компонентов.
На css-tricks появилась неплохая обзорная статья Евгения Клименченко о тестировании фронтенда. Автор рассматривает unit-тесты, интеграционные и e2e-тесты, говорит о тестировании доступности, визуальных регрессий и производительности. Евгений делит тесты на категории по уровню — от низкого до высокого — и для каждого типа тестов приводит набор инструментов.
Том Макрайт (Tom MacWright) в своем блоге опубликовал статью «Vendor by default» — о работе с зависимостями. Суть в том, что код небольших зависимостей он копирует в свои проекты, разбирается в нём, рефакторит и удаляет ненужные части. Это позволяет лучше разобраться в библиотеке и её ограничениях. Иногда он отказывается от зависимости совсем и пишет нужный код сам или находит более подходящую альтернативу. Не уверен, что это подойдёт для работы на повседневных проектах, т.к., скорее, затруднит работу команды, но подход имеет право на жизнь.
Лин Кларк (Lin Clark) на Bytecode Alliance поделилась методами оптимизации работы JavaScript-кода в WebAssembly-окружении. Оптимизации — штука не универсальная, не на всех платформах можно применять любые: например, на iOS не работает JIT-компиляция. Участники Bytecode Alliance работают над решением на базе WebAssembly, которое позволит ускорить выполнение JS-кода. Планируется использовать снапшот памяти для уменьшения времени инициализации программы до нескольких микросекунд, а также AOT-компиляцию. Отмечается, что подход можно использовать не только с JavaScript, но и с Python, Ruby, Lua.
JavaScript Notes & Reference — текстовые заметки и справочная информация по JavaScript, в основе которых лежит видеокурс Уэса Боса (Wes Bos). Уэс решил создать бесплатный текстовый ресурс с материалами курса и оформил его как отдельный раздел своего сайта.
Закрывает рубрику progression.fyi. Это коллекция матриц компетенций, путей роста и карьерных путей разработчиков от разных компаний. Среди них можно увидеть Basecamp, BuzzFeed, CircleCI и много других компаний.
Новости релизов
Вышел Firefox 89. Впервые за несколько лет был значительно обновлён дизайн: обновлены табы, главное меню, спрятаны некоторые кнопки. В общем, теперь Firefox выглядит модно-молодёжно. В JavaScript включена поддержка top-level await. ArrayBuffer на 64-битных системах теперь может использовать до 8 Гб памяти вместо 2. Появилась поддержка forced-colors: active. Добавлены директивы line-gap-override, ascent-override и descent-override для @font-face, напомню, они помогают бороться с CLS. Добавлена реализация PerformanceEventTiming из Event Timing API для измерения времени обработки событий.
После презентации Apple появилась бета Safari 15. Наверное, самая большая новость — поддержка браузерных расширений на iPad и iOS. Также браузер подвергся редизайну: интерфейс стал лаконичнее, появились коллекции вкладок из коробки. Помимо этого появилась поддержка top-level await и ES модулей в сервис воркерах, гриды в веб-инспекторе. Была улучшена поддержка aspect-ratio(), продолжается работа над расширением поддержки WebAssembly, также был анонсирован ряд обновлений, касающихся приватности.
Доступен Jest 27. Теперь тесты запускаются на 70% быстрее, а в интерактивном режиме можно поочередно переходить к упавшим тестам. Продолжается внедрение ES-модулей, была добавлена новая реализация мока таймеров. Был удален ряд устаревших методов и изменен ряд установок по умолчанию. Изменений много, больше подробностей — в обзоре релиза от Тима Секингера (Tim Seckinger).
Вышла версия Node.js 16.3.0. Был добавлен алиас -C для флага --conditions, также была добавлена поддержка воркспейсов для npm install.
Фреймворк Electron отметился релизом 13 мажорной версии. Версию Chrome обновили до 91, а V8 — до 9.1. Были добавлены новые методы API и выпущен ряд багфиксов.
Также отмечу релизы СУБД Firebird 4.0 с поддержкой репликации и ChromeOS 91.
Другие новости
На сайте консорциума всемирной сети появился анонс начала работы WebExtensions Community Group. Инициировали создание группы Apple, Google, Microsoft и Mozilla. Основная цель — выработать общее видение для дальнейшей стандартизации браузерных расширений. Отмечается, что магазины расширений у каждого браузера останутся независимыми, в целях нет тотальной стандартизации каждого аспекта расширений. В целом это хорошая новость, посмотрим на работу группы в будущем.