Всем привет, это «Новости 512» от CSSSR. В этом выпуске мы поговорим про деплой в продакшен, асинхронность JS и создание сложных таблиц. Мы посмотрим на сравнение генераторов сайтов, экспериментальный Vercel Cache API и Feature Layered Design. В этом же выпуске релизы: TypeScript 5.0 RC, Next.js 13.2 и Deno 1.31.
Прежде чем мы начнём: я уже говорил о том, что новости пока будут выходить два раза в месяц. Следующий выпуск новостей выйдет на неделю позже, 24-го марта. Мне понадобилось взять небольшой отпуск и отдохнуть, после чего я вернусь, надеюсь, свежим и бодрым и продолжу делать для вас новости. Спасибо, что слушаете. Теперь к выпуску.
Интересные публикации
Никто не хочет, чтобы на продакшене код появлялся по методу «кхм-кхм — и в продакшен» — все мы стараемся делать это надёжно, быстро, без даунтаймов и так далее. Но как выбрать оптимальный подход? Как раз об этом первый материал. Есть крайности деплоя кода в продакшен: без проверок вообще или с бесконечным количеством разных проверок. Основная мысль статьи — должен быть баланс между количеством слоёв верификации и деплоем в зависимости от того, какие потребности у компании. Автор описывает возможные флоу деплоя в компаниях разного размера, приводит разные методы и практики, которые помогут провести деплой здорового человека в разных ситуациях.
В асинхронности JavaScript можно разбираться бесконечно, а количество статей превышает все разумные пределы. Эта статья пытается собрать все знания об асинхронности в одном месте. Всё начинается c цикла событий (Event Loop) и довольно подробно: здесь и про тики, и про микротаски, и про сравнение очередей. Затем автор касается колбэков, говорит о промисах и async/await. Всё подробно, с примерами, тонкостями и нюансами.
Есть сериал «13 причин почему», а есть статья «12 неочевидных правил проектирования REST API» от команды Red Mad Robot. В статье — введение в само понятие REST API, некоторые понятия, которые нужны для разбора статьи, и 12 частых кейсов с подсказками. В статье также есть советы по версионированию, форматам ответа, описанию ошибок и другие. Некоторые из них могут показаться очевидными, но прочитать их точно не повредит.
Игорь Агапов на Хабре опубликовал статью о работе с React Table. Это одна их самых популярных библиотек для создания разных функциональных таблиц. React Table — headless-библиотека, она поставляет только функции, а разметка — на плечах разработчика. Игорь отмечает, что библиотека мощная, но непростая в освоении. В своей статье он приводит пример реализации сложных таблиц с фильтрацией, сортировкой, пагинацией и возможностью выбора строк. Есть репозиторий с примером. Отдельно отмечу, что вышла новая, восьмая, версия библиотеки. Она называется TanStack Table 8 и не зависит от фреймворка. Ссылку на новую версию приложу.
Юрий Безруков на Хабре приподнял завесу тайны новой фичи Angular 15 — API композиции директив. Эта фича была призвана расширять возможности директив (в том числе и из библиотек), а бонусом — уменьшать дублирование кода при разработке похожих директив. Статья небольшая, на 5-7 минут. Естественно, примеры прилагаются.
Следующая статья посвящена Feature Layered Architecture
. Это реализация концепции Feature Layered Design
, в которой всё приложение делится на слои, каждый слой — на слайсы, а слайсы — на сегменты. Слои разделяют приложение на зоны ответственности: у каждого модуля должен быть публичный API, при этом они обладают низкой степенью связности. Как пишут на сайте FLD, подход сразу ориентирован и на потребности пользователей бизнеса, упрощает разработку и онбординг. Примерно так уже давно построены проекты в .NET. Если ни разу не сталкивались — посмотрите.
Vercel объявил о запуске нового экспериментального Vercel Cache API, который позволяет кэшировать часть страницы как статические данные, а другую ее часть рендерить динамически. Фича уже доступна в Next.js 13.2, о котором я ещё скажу чуть позже. Новый API по идее поможет перекрыть недостатки инкрементальной статической регенерации (ISR), которая появилась в 2020. Подробнее о новом кэше и ISR — в блоге Vercel.
Зак Лезерман (Zach Leatherman) в своем блоге провёл сравнительный разбор генераторов сайтов. В его список попали Astro, Eleventy, Gatsby, Next.js и Nuxt.js, Remix, SvelteKit и Enchance. Он сравнивал их по времени установки, размеру и другим параметрам. Получилось очень компактно. Хорошая заметка, чтобы выбрать подходящее для себя решение.
Теперь немного о доступности. Соня Уэкенман (Sonja Weckenmann) в SmashingMagazine опубликовала статью о создании доступной карусели. Это пошаговый гайд, в начале которого Соня делает обзор начальных условий для создания доступной карусели, а затем рассказывает о разметке и как всё правильно организовать. Гайд получился комплексный и охватывает разные по типу требования к доступному компоненту.
Как много вы знаете о маркерах в списках? Проверьте, прочитав следующий материал. В заметке описывается базовое поведение маркеров списков в разных браузерах, работа отступов и разных видов группировки элементов списка. Автор также рассматривает кастомные маркеры и способы их применения к спискам.
Теперь статья для расширения кругозора и прокачки инфобез-навыков. Речь пойдёт об XSS-атаках. Александр Дунай в блоге Альфа-банка на Хабре опубликовал статью о разных типах XSS-атак. В статье описываются такие виды, как хранимые и отраженные XSS-атаки, атаки на основе DOM и другие, менее распространенные. В начале статьи — теоретические сведения об XSS, а по тексту — несколько примеров.
В конце выпуска тройка материалов, которые тоже помогут расширить кругозор. Первый посвящён написанию автотестов с Playwright и TypeScript. Во втором предлагается написать собственное браузерное расширение, которое ворует данные. В третьем можно посмотреть, как создаются смарт-контракты блокчейна Solana на языке Rust.
Новости релизов
Доступен релиз-кандидат TypeScript 5.0. Чего стоит ждать от новой мажорной версии? Декораторы получили поддержку первого класса, появилась поддержка export type *
, enums
теперь работают как объединения или unions
. Также поработали над производительностью и размером бандла. Ждём полноценного релиза.
Вышел Next.js 13.2. В новой версии появился Metadata API, который помогает работать с тегами meta
и SEO. Добавилась возможность использования кастомных обработчиков запросов, появился новый, более быстрый парсер Markdown-файлов, обновился экран с ошибками. Кроме того, была добавлена поддержка экспериментального Vercel Cache API, о котором я говорил чуть раньше. В Next.js он поддерживается через бету Next.js Cache.
Deno 1.31 продолжает радовать нас расширением поддержки Node.js. Теперь рантайм поддерживает package.json
и автоматически его находит. N-API был стабилизирован, что позволяет использовать полагающиеся на него модули без флага --unstable
. Сам слой совместимости с Node.js теперь стал частью рантайма Deno. CLI немного обновили, а версия V8 обновлена до 11-ой.
В Node.js версии 19.7.0 прошло очередное обновление npm до версии 9.5. Также в ней есть экспериментальная фича упаковки приложений в .exe-файл, которая позволяет собирать Node.js-приложения для платформ, на которых нет установленной Node.js. Также в этой версии был добавлен новый парсер URL Ada. LTS-ветка тоже обновилась. Версия 18.14.2 получила аналогичное обновление npm и апгрейд версии V8 с новым патчем.
Eleventy отметился релизом беты второй мажорной версии. Вторая версия стала быстрее, уменьшилась в размере, обзавелась новыми плагинами, поддерживает Vite-плагины и ощутимо быстрее устанавливаются. Отдельно отмечу, что минимальная поддерживаемая версия Node.js теперь 14-ая.
Было сформировано обновление Firefox 110.0.1. В нём исправили очищение кукис: кнопка очистки за определенный промежуток времени очищала все куки. Также было исправлено еще несколько ошибок.
Также отмечу обновление Ubuntu 22.04.2 LTS с обновлением графического стека и улучшениями совместимости оборудования, релизы Ember.js 4.11, обновление Angular 15.2 и nginx Unit 1.29.1.
Другие новости
Получила развитие история с GitHub Copilot и коллективным иском от разработчиков open-source проектов. Ожидаемо адвокаты Microsoft, GitHub и Open AI просят иск отклонить. Адвокаты настаивают на том, что какой-либо ущерб истцам не доказан, а все претензии строятся на гипотетических событиях. Напомню: истцы суммарно требуют 9 миллиардов долларов компенсаций. На самом деле, как ни прискорбно, но ответ адвокатов звучит довольно логично, и доказать какой-то ущерб, который нанёс или мог нанести Copilot авторам кода, очень и очень сложно. Забавно, но теми, кто подрывает и нарушает принципы свободного ПО, адвокаты называют как раз истцов. Решение по этому поводу отложено на май, но с большой вероятностью иск будет отклонён. Посмотрим, что получится в итоге.
Кстати о GitHub. Платформа запустила новую фичу, которая доступна всем абсолютно бесплатно, — это сервис проверки репозиториев на утечку конфиденциальных данных. Она работает в публичных репозиториях, а включается в настройках безопасности. Таким образом, сервис будет сигнализировать, если в репозитории оказались ключи, токены и другие важные данные.