Всем привет. Сегодня мы обсудим материал о 10 паттернах интеграции микросервисов, почему REST уже давно не REST, как можно улучшить флоу аутентификации пользователей и от каких устаревших шаблонов стоит отказаться. Также мы посмотрим на свежие релизы Parcel и VS Code, коротко пробежимся по релизам фреймворков и другим релизам недели.
Интересные публикации
Первый материал — обзор шаблонов интеграции микросервисов. Компания Southbridge недавно проводила вебинары по микросервисам, и теперь на Хабре появилась текстовая версия в двух частях. Обзор получился крутой: разбирается 10 разных методов, среди которых Backend-for-Frontend, про который вы наверняка слышали, и те, которые могут быть не совсем на слуху, например асинхронный запрос-ответ. Каждый паттерн сопровождается описанием ключевых особенностей, наглядной концептуальной схемой, плюсами и минусами подхода. Конечно, есть и примеры к каждому, тоже с отличными и понятными схемами. Получилось здорово, очень рекомендую. Первая часть. Вторая часть.
В блоге GitHub появился пост о новом синтаксисе селекторов зависимостей для npm. Разработчики надеются, что это станет способом для разработчиков лучше управлять зависимостями на своих проектах, задавать о них сложные вопросы и получать ответы, которые помогут им делать проекты лучше. Новый синтаксис появился в npm 8.16.10 — это команда npm query, которая принимает на вход селектор и возвращает JSON с зависимостями. Синтаксис был вдохновлён CSS-селекторами, так что он покажется вам знакомым. Сейчас можно запросить, например, версии определённых пакетов, запросить пакеты с определённой лицензией, peer-зависимости и другое. В дальнейших планах — создать ряд полезных псевдоселекторов, например :outdated или :deprecated.
В прошлом выпуске мы говорили об Event Loop. В этом выпуске мы немного продолжим, но на этот раз с более практической стороны, а конкретно — для собеседований. На Хабре появилась статья с разбором нескольких задач на Event Loop, которые могут встретиться вам на собеседованиях. Предлагается использовать для их решения таблицу, в которую можно вносить таски основного потока, микро- и макротаски. Это нужно для того, чтобы пошагово разбирать работу скриптов. В статье разбираются 4 задачки и описывается общий принцип решениях задачек на Event Loop.
Адаптивные таблицы. Некоторые из вас содрогнутся, когда услышат это словосочетание, а некоторые, наоборот, улыбнутся. Тем не менее таблицы — один из самых важных и удобных способов представления сводной информации, и нам никуда от этого не деться. Именно поэтому с ними в своей статье пытается разобраться пользователь Хабра @rococho (надеюсь я читаю ник как задумывал его автор). Если в вашем распоряжении экран пользователя с диагональю 27 дюймов, то проблем не то чтобы много. А если мобильное устройство? Это тьюториал, в котором автор сначала обсуждает проблемные места, а затем реализует адаптивную таблицу с применением Vue 3, CSS-модулей и компонентного подхода. Код может показаться вам громоздким, и существует какое-то количество готовых решений, которые удовлетворяют часть нужд. Однако тьюториал заслуживает внимания.
У следующей статьи громковатое название — «Как REST стал означать противоположное REST». Это размышление с экскурсом в историю о том, как изменялся подход REST, что означал и почему автор считает, что REST больше не REST. Если коротко, он считает, что во всём виноват JSON и человеческая лень. Основной тейк — RESTful API должен использовать для ответов и запросов HTML как самоописывающий и понятный системам формат. В итоге из-за простоты JSON форматы XML и HTML практически перестали использоваться в новорожденных API, что и сделало их не вполне RESTful. Да, в них есть URL, построенные по правилам REST в виде ресурсов, используются HTTP-глаголы (GET, POST и другие), но используется JSON. Плохо это или хорошо? Я не уверен, что выбирать более простой и понятный формат, такой как JSON, — это плохо. Но судите сами — в статье написано сильно больше, и, если вам интересна тема, обязательно почитайте.
Если вы не сталкивались с Postman и автоматизацией тестирования API с его применением, то вам точно стоит открыть статью Майоуа Оджо (Mayowa Ojo). Здесь небольшой экскурс в работу Postman, примеры создания запросов и сервера для тестов. Также обсуждаются минусы и случаи, когда Postman для вашего проекта не подойдёт.
Темани Афиф (Temani Afif) продолжает писать статьи на CSS Tricks. Недавно я упоминал его статью про гриды. Новая тоже про гриды, а конкретно — про зум изображений внутри построенной сетки. Это небольшой гайд, в котором фича пошагово реализуется. Здесь зум с адаптацией остальных изображений под увеличенное, ховер-эффекты и другое. Попробуйте — гайд небольшой, а получается красивое.
Виталий Фридман в Smashing Magazine опубликовал статью о том, как можно позаботиться о пользователях и их флоу аутентификации при помощи разных паттернов. Здесь разбирается довольно много существующих обычных практик, их недостатки и идеи по их устранению. Например, правда ли нужно создавать правило для создания пароля из 10 маленьких пунктов? Или делать несколько страниц последовательных действий? Может быть, не очень безопасно отправлять новый пароль пользователю на почту? На эти темы Виталий и рассуждает. Получилось интересно.
Как выбрать редактор кода в 2022 году? Мой ответ был бы «пользуйтесь, каким нравится», но как его выбрать и сколько же их? На эти вопросы попытались ответить в видео на YouTube-канале Fireship. В этом видео за 10 минут разбирается 10 разных редакторов от Vim до VS Code и IDE WebStorm. Это обзорное казуальное видео, но вдруг вы увидите в нём редактор, который вас заинтересует.
Новости релизов
Вышла версия 2.7 бандлера Parcel. В этот релиз была добавлена возможность писать конфигурации плагинов с расширением .cjs, компиляция нескольких модулей Elm с опцией with, опция errorRecovery для @parcel/transform-css и экспериментальная возможность делать бандлы для нескольких целевых платформ. Также был представлен ряд фиксов багов и другие экспериментальные нововведения.
VS Code 1.70 уже доступен для обновления. Подъехали новые фишки. Например, мне очень понравилась возможность создавать кастомные регионы для скрытия в разных файлах, возможность выбирать несколько результатов поиска и сразу же изменять что-то во всех результатах сразу и поиск прямо в столбце дерева файлов. Отдельно отмечу, что теперь при скролле редактор показывает текущий скоуп, например, при скролле большой функции вы будете видеть её заголовок, пока не проскроллите её скоуп. Также в этом выпуске улучшения терминала, поддержка TypeScript 4.8, который скоро выйдет, и другие небольшие нововведения.
Следующий релиз — Cypress 10.4.0. Наверное, самым примечательным нововведением стоит назвать поддержку Cypress Component testing React 18 и Vit 3. Также была добавлена пачка багфиксов и обновления зависимостей.
Вы скажете: «Ещё один JS-фреймворк,» — и мне будет сложно с вами не согласиться, но вышел Astro 1.0. Он обещает и подход «островов» для ленивой загрузки и ускорения, который я упоминал в позапрошлом выпуске, когда рассказывал о фреймворке Fresh от Deno, и наличие SSG и SSR. Кроме того, Astro сулит поддержку ваших любимых инструментов из коробки без лишних настроек (React или TypeScript можно добавить в проект одной командой) и простой, быстрый деплой на разных платформах. Пока сложно сказать, насколько он крутой, но попробовать в принципе можно.
Также на этой неделе я бы хотел отметить другие релизы JS-фреймворков и около. Это Ember 4.26, Redwood 2.2.0, Electron 20 и Ionic 6.2.
Закроет рубрику релизов Годзилла. Нет, не так — Docusaurus 2.0. Это статический генератор сайтов, который заточен именно под документацию. Просто пишите свой Markdown и легко хостите везде, где хотите. Версию 2.0 делали 4 года, но обещают теперь выпускать мажорные релизы чаще. Попробуйте — возможно, именно Docusaurus оживит документацию в вашей команде.
Другие новости
Несколько позже мы поговорим про TypeScript 4.8, а сегодня я расскажу вам о предложении, которое было внесено касательно типизации в JS. Если точнее, речь идёт про аннотации типов, которые могут быть опциональными и которые браузер может полностью игнорировать, а инструменты типа TypeScript смогут использовать, сокращать, а то и вовсе пропускать шаг билда. Речь идёт о том, чтобы добавить аннотации для переменных и функций, оператор опциональности, возможно, модификаторы доступа. Даниэль Розенвассер (Daniel Rosenwasser) — один из авторов предложения — пояснил, что это не предложение добавить тайпчекер во все браузеры и рантаймы, а предложение добавить удобный синтаксис, который смогут использовать тайпчекеры, но который не будет влиять на райнтайм и браузеры. Сейчас у пропозала статус Stage-1. Непонятно, увидим ли мы его в одной из новых версий стандартов, но посмотрим. К выпуску прилагаю статью Даниэля об этом в блоге TypeScript и ссылку на сам пропозал на GitHub.