Интересные публикации
В одном из прошлых выпусков я рассказывал о TablesNG — новом подходе к рендерингу таблиц, который позволил устранить большое количество проблем. В блоге Chrome Developers появилась статья о более масштабной работе — RenderingNG. Под NG подразумевается рендеринг нового поколения. По словам Криса Харельсона (Chris Harrelson) — лида команды рендеринга Chrome — это будет новая архитектура, которая значительно превосходит текущую. Над новым рендерингом работают уже почти 8 лет, а амбиции серьезные — задать новую минимальную планку для браузерного рендеринга. Это первая статья серии с ключевыми поинтами и описанием подпроектов, в следующих обещают больше подробностей.
Адриан Беце (Adrian Bece) на SmashingMagazine написал статью о рефакторинге CSS. Он рассказывает, какие побочные эффекты есть у «плохого» CSS — внезапные баги, неконсистентность, лишний код и другие, — а после пытается ответить на вопрос, что лучше: рефакторить или всё переписывать? Адриан рассматривает плюсы и минусы обоих подходов. В итоге он рекомендует переписывать, только когда есть фундаментальные проблемы или рефакторинг будет стоит дороже. Кроме того, затрагивается и аудит кодовой базы CSS. Это первая статья серии, будет продолжение.
Никита Руденко в корпоративном блоге Miro на Хабре опубликовал статью о кейсе оптимизации потребления оперативной памяти для iPad. Проблема была в том, что отрисованные элементы могли мигать или исчезать, сыпались баг-репорты. Решили использовать векторы для отрисовки кривых, а также изменить способ хранения данных о кривых в памяти. Это помогло снизить потребление памяти примерно на 40%.
Аксель Раушмайер (Axel Rauschmayer) в своем блоге выложил статью о работе с ES-модулями на Node.js и с TypeScript. Он начинает с создания тестового npm-пакета и базовой конфигурации, а потом в деталях описывает конфигурацию свойства exports в package.json и преимущества ES-модулей — скрытие внутренней структуры и упрощение доступа к модулям в глубине пакета. Аксель отмечает, что тестировал пример только на Node.js, и прикладывает ссылки на полезные материалы по теме.
Марчин Ванаго (Marcin Wanago) написал большой цикл статей о создании API на Nest.js: он использует репозиторий typescript-starter от Nest.js и строит на нём блог. Статей в серии целых 40, так что, как вы можете догадаться, гайд получился большой и подробный. Покрывается большое количество тем: от базовой структуры и хранения данных в базе PostgreSQL до реализации двухфакторной аутентификации и интеграции со Stripe. Репозиторий с полным кодом проекта прилагается.
Джейк Арчибальд (Jake Archibald) разобрался в разнице между работой export default и export as default. Дело в том, что export default возвращает значение, а не ссылку. В статье рассматриваются примеры разных экспортов и подробно описывается разница. Сам Джейк отмечает, что вряд ли стоит заносить такой нюанс в вопросы для собеседований, но получилось интересно.
Лиран Тэл (Liran Tal) опубликовал репозиторий с лучшими практиками создания CLI-приложений на Node.js. Как большой фанат и разработчик консольных интерфейсов он собрал ряд советов, которые помогут сделать понятный и приятный для пользователей интерфейс, соблюсти общепринятые стандарты и избежать распространенных ошибок.
Продолжая разговор о лучших практиках. Вы можете знать, что у AirBnB есть свой конфиг для ESLint, и многие компании его форкают и адаптируют для своей работы. Я хочу напомнить, что существует ещё и стайлгайд по написанию JavaScript от AirBnB, если ещё не видели — посмотрите, также есть версия на русском языке.
Следующий материал посвящен Astro — сборщику сайтов, который позволяет разрабатывать сайт с использованием фреймворков и JS, а в итоге собирает сайт со статикой, на котором JavaScript есть только там, где он нужен. Кроме того, поддерживаются загрузка компонентов по требованию, TypeScript, CSS-модули и другие популярные технологии. Кстати, на css-tricks своими впечатлениями от работы с Astro поделился Крис Койер (Chris Coyier).
Закрывает рубрику стрим от HTML Academy. Алексей Симоненко и наш разработчик Никита Голубов обсудят навыки и технологии, которыми должен владеть верстальщик. Стрим пройдет в четверг, 15 июля, в 13:00 по московскому времени. Приходите!
Новости релизов
Доступна восьмая мажорная версия Nest.js. Была добавлена фича для версионирования API, которая позволяет поддерживать разные версии роутов API, а для некоторых роутов теперь можно не использовать глобальный префикс. Кроме того, добавили класс для ленивой загрузки модулей, представили улучшения для микросервисов и веб-сокетов.
Вышла новая версия Gatsby. В релизе 3.9 появилась поддержка SSR для Suspense при использовании React 18, а для Gatsby Cloud появилось приложение Shopify. Помимо этого был представлен ряд багфиксов.
Релизами отметились сборщики Snowpack и Rollup. В Snowpack обновили пару зависимостей, а в Rollup исправили небольшой баг, связанный с тришейкингом.
Также стоит упомянуть релизы браузера Tor 10.5, веб-сервера nginx 1.21.1 и фреймворка Ember 3.27.
Другие новости
Amazon представила OpenSearch 1.0. Напомню, из-за конфликта с Elasticsearch и изменения лицензии компания инициировала форк и разработку «открытой» версии Elasticsearch. Заявляется, что версия 1.0 production-ready и все могут ей пользоваться, как вы понимаете, в первую очередь, сама Amazon. Также доступен публичный роадмап проекта.
Продолжается развитие поддержки языка Rust в ядре Linux. Мигель Охеда (Miguel Ojeda) предложил разработчикам ядра обновленную версию изменений, которые позволят использовать Rust как второй язык для разработки драйверов и модулей ядра. Фича пока экспериментальная, но попадет в следующие версии.
Кстати, о Rust. В блоге Tor появилось объявление о начале разработки браузера на чистом Rust. Делается это потому, что Rust позволит работать с памятью более безопасно, и это автоматом устранит много проблем с потенциальными уязвимостям в текущей версии, написанной на C. Отмечается, что поддержку версии на C прекращать не планируется.