Всем привет, это «Новости 512» от CSSSR. Всех с наступившим Новым годом! В этом выпуске: Chrome 132 и Firefox 134, type-level программирование, углубление в Vue 3, Feature-Sliced Design и Domain-Driven Development, оптимизации, отказ от Next.js и немного обучающих материалов. Также в этом выпуске результаты State of JS 2024 и другие итоги года.
Интересные публикации
Сегодня мы начнём со статей доктора Акселя Раушмаера (Dr. Axel Rauschmayer), который, как и всегда, радует нас обзорами новых фич JavaScript и экосистемы. Первая статья посвящена атрибутам импортов (несколько раз мы о них уже говорили, это уже детальный обзор). В нём есть общее описание, описание фич, которые будут базироваться на атрибутах импортов, потенциальные проблемы, которые могут возникнуть, а также история возникновения пропозала и самой фичи. Второй материал посвящён поддержке TypeScript в Node.js из коробки. Поддержка реализована через type stripping
, то есть ничего не транспилируется, а просто удаляется весь связанный с типами синтаксис. Эта статья о том, как фича может повлиять на процесс разработки и что с этим делать.
Довольно много материалов об опыте внедрения каких-либо технологий и гораздо меньше — об отказе. Эта статья как раз про отказ от Next.js. Команда ComfyDeploy перевела свой дашборд на чистый React без Next.js. С Next.js стало появляться больше проблем: тестирование усложнялось, билд и dev-версия были медленными, а однажды пришёл внезапный счёт от Vercel. Было принято решение переходить на чистый React. В итоге сборка ускорилась с 3 минут до 18 секунд, hot reload стал быстрее 200 миллисекунд, а команда стала гораздо счастливее.
Есть концепция type-level программирования: это набор приёмов, который позволяет решать определённые задачи ещё на уровне компиляции с использованием системы типов. Об этом подходе в контексте TypeScript рассказал на Хабре Андрей Чмелев. Он рассказывает о преимуществах подхода, делает введение в саму концепцию конкретно в TypeScript, приводит примеры, а также говорит о плюсах и минусах подхода.
Следующий материал от того же автора. Он посвящён Vue 3, его устройству под капотом и тонкостям работы Composition API. В этой статье Андрей разбирает новую систему реактивности, сложные сценарии с provide/inject и customRef, а также Suspense и асинхронные данные. Если вы работаете с Vue и планируете углубляться в его изучение — рекомендую.
Далее три материала, которые посвящены оптимизации. Два первых касаются React. В первом рассматривается использование хуков useTransition, useDeferredValue и useOptimistic. Второй касается применения мемоизации для оптимизации производительности React-приложений. А третий посвящён производительности и оптимизация TypeScript-типов в больших проектах (тоже, кстати, за авторством Андрея Чмелева).
Поговорим немного и об архитектурных подходах. Егор Пестов на Хабре поделился опытом своей команды по внедрению Feature-Sliced Design. Он описывает процесс внедрения с нуля, рассказывает о стеке, выборе технологий и о том, каким в итоге получился их флоу разработки. Всё описано достаточно подробно, с примерами. Если вы не очень знакомы с Feature-Sliced Design, то отсюда и можно начать.
Ещё один подход — DDD, или Domain-Driven Development. Его суть в отражении предметных областей и реальных бизнес-процессов в коде и соответствующей компоновке частей системы ПО. В этой статье речь пойдёт о нём с некоторой завязкой на NestJS. Внутри вы найдёте введение и базовые понятия, примеры и список распространённых ошибок при внедрении DDD.
В конце рубрики несколько интересных материалов образовательного плана, которые ориентированы на разработчиков разного уровня.
Райан Дал (Ryan Dahl) рассказал на конференции GOTO Chicago от Deno 2, чем Deno отличается от Node.js. Этот доклад хорошо подойдёт тем, кто уже несколько знаком с Node.js и хочет приобщиться к Deno.
Если вы никогда не пробовали поработать с NestJS, то следующая статья как раз для вас. Это гайд по созданию REST API с NestJS и TypeORM.
Следующий материал — репозиторий Леонардо Малдонадо (Leonardo Maldonado), в котором собраны 33 концепции JavaScript, с которыми должны быть знакомы разработчики. Внутри — удобная таблица контента и хороший список тем.
Вы можете быть знакомы со знаменитой книгой «Выразительный JavaScript». Она по-прежнему бесплатная и доступна онлайн. Почему я о ней вспомнил? Потому что вышло новое издание 2024 года. Ссылка на книгу — в описании выпуска.
Олег Иванов разобрал задачку написания функции-счётчика на JavaScript. Она не особенно сложная, но он решает её несколькими способами, чтобы продемонстрировать возможности и особенности JavaScript.
В конце рубрики материал о том, почему начинающие разработчики путаются в асинхронном коде. Внутри разбор, распространённые ошибки и ссылки для дополнительного изучения темы.
Новости релизов
Вышел Chrome 132. В этом релизе для элемента добавили событие ToggleEvent, который сигнализирует о закрытии или открытии элемента. Для разработки фич шеринга видео добавили возможность шарить конкретный элемент, что может быть полезно, если, например, возникнут перекрывающие элементы типа дропдаунов. Также File System Access API стал доступен для Android и WebView. Для DevTools продолжают развивать интеграцию с AI-ассистентом Gemini: теперь он может помогать дебажить сетевые запросы, файлы и записи о производительности. Помимо этого, появилась возможность работать с хранилищем данных расширений и добавлен ряд улучшений для панели производительности. Больше подробностей — в официальных обзорах Chrome и DevTools от Google.
Доступен Firefox 134 (Firefox for devs). В этом релизе добавили метод RegExp.escape(), позволяющий убрать из строки случайные символы, которые используются в синтаксисе регулярных выражений. Метод Promise.try() теперь тоже поддерживается, он оборачивает функцию и её результат в промис, в итоге синтаксис try/catch можно в принципе использовать с любой функцией. CSS-свойства align-self и justify-self, а также сокращение place-self теперь поддерживаются для абсолютно позиционированных элементов.
В Node.js 22.13.0 LTS модель разрешений перевели из статуса активной разработки в статус стабильной фичи.
Состоялся релиз pnpm 10. В этом релизе скрипты жизненного цикла зависимостей по умолчанию отключены, обратите на это внимание. Для того чтобы они выполнялись во время установки как раньше, нужно перечислить зависимости в специальном поле — это сделано в целях усиления безопасности. Также для безопасности алгоритмы шифрования были обновлены на алгоритм SHA256. Было обновлено поведение команды pnpm link. Также есть и некоторые другие несовместимые изменения, подробности — в release notes.
Другие новости
Уже доступны результаты Sate of JS 2024. Этот год также можно назвать годом Vite и Vitest: их активно адаптируют команды, они показывают высокий уровень удовлетворённости разработчиков, продолжают лидировать в разного рода опросах. Растёт интерес к Angular, Svelte и Astro. По фичам языка можно сказать, что в общем новые фичи стали чаще адаптировать сразу и, соответственно, следить за ними заранее. Что удобно, теперь у фич есть индикатор, который показывает, насколько широко они поддерживаются браузерами. В этом опросе тоже много интересного, я советую потратить 15–20 минут на то, чтобы его внимательно просмотреть: это помогает лучше понимать, что происходит в экосистеме, и иметь это в виду.
JetBrains опубликовала результаты своего опроса о состоянии экосистемы разработки 2024. Здесь в топе ожидаемо JavaScript, TypeScript, Java и Python, набирает популярность Go. С базами данных тоже без неожиданностей: MySQL, PostgreSQL, MongoDB, SQLite. Rust называют перспективным языком, многие хотят освоить Rust и Go как второй язык. Самые большие трудности вызывают выявление потребностей пользователей и коммуникация с командой. Внутри больше интересного, я приложу для вас оригинал и анализ одного из авторов на Хабре.
Подводятся итоги и по звёздам на Github. Это топ JavaScript Rising Stars 2024. Это рейтинг по приросту звёзд на Github за 2024 год, проекты разделены на категории, есть и общий топ. Я думаю, что звёзды на гитхабе уже как-то научились накручивать, но этот рейтинг всё равно даёт какое-то представление о популярности инструментов и помогает найти что-нибудь интересное.
Был опубликован рейтинг баз данных за 2024 год. В целом особенных сюрпризов нет, но держу вас в курсе. Первая пятёрка: Oracle, MySQL, Microsoft SQL Server, PostgreSQL и MongoDB. На шестом месте внезапно оказалась Snowflake, а Elasticsearch и SQLite сохранили места в десятке.
В конце выпуска небольшой апдейт по спору о торговой марке JavaScript. Как и ожидалось, Oracle расставаться со своей собственностью не намерена. Впереди исследование, которое должно доказать, что JavaScript — широко употребляемый общий термин. Посмотрим, как будет развиваться эта история.
На сегодня это всё. Всем пока и до встречи в следующем выпуске.