🛟 Angular 22.2: упавший шаблон больше не ломает страницу
Раньше ошибка при рендере шаблона уходила в глобальный ErrorHandler, а часть страницы оставалась недорисованной.
Новый блок @boundary ограничивает ущерб: если внутри что-то бросит исключение, Angular покажет вместо этой секции блок @error. Идея подсмотрена у React.
Первый @error ловит сетевые ошибки и даёт повторить рендер через $reset, второй ловит всё остальное. С Resource API это удобно: value() при сбое загрузки бросает исключение, и проверять error() заранее не нужно.
Пока @boundary в статусе developer preview.
А ещё в статье Router Resources: данные маршрутов грузятся параллельно, а не цепочкой резолверов.
💻 Монолит или микросервисы? Кажется, что ответ очевиден, но почему-то одни проекты летают, а другие тонут в хаосе?
Присоединяйтесь к открытому уроку Сергея Прощаева и получите пошаговое руководство по выбору архитектуры.
📅 9 ноября в 20:00. Разберём:
- Как не попасть в ловушку «модных» микросервисов.
- Признаки, что пора выходить из монолита.
- Архитектурные паттерны перехода: Strangler Fig, BFF, Self-contained systems.
- Организационные и технические риски — что пойдёт не так.
- Роль DevOps, CI/CD и мониторинга.
Вы научитесь оценивать реальные риски и стоимость микросервисов, внедрять изменения без сбоев и хаоса и принимать взвешенные решения, сохраняя технический контроль и производительность команды.
🪄 Один URL: модалка поверх списка и полноценная страница
В каталоге детали карточки удобно открывать поверх списка. Но если модалка живёт в useState, адрес не меняется. Ссылкой не поделиться, после reload остаётся список, а поисковик деталей не видит.
В Next.js App Router это решают Parallel Routes и Intercepting Routes. Модалка лежит в слоте @modal, который layout рисует рядом со страницей. Папка с префиксом (.) перехватывает обычный маршрут:
@modal/
(.)events/
[id]/
page.tsx
При клике через Link адрес меняется на /en/events/123, а детали открываются поверх списка. При прямом заходе или reload перехвата нет, и рендерится обычная страница со своими metadata и canonical.
Слоту обязательно нужен default.tsx, который возвращает null. Без него при прямом заходе можно получить 404.
В статье ещё разобрано, как закрыть модалку и вернуться к списку с теми же фильтрами.
Общую логику приложения можно вынести в зависимости и переиспользовать, чтобы код оставался чище, а правки делались в одном месте.
На открытом уроке «Зависимости в FastAPI: возможности Depends» разберём, как работает Depends, как собирать цепочки зависимостей и где их применять.
Ждем 17.11 в 20:00.
🛡️ Как не дать чужому пакету украсть ваши секреты через pnpm install
Атаки на npm-пакеты обычно идут по одной схеме. Пакет взламывают, его postinstall-скрипт запускается у вас на машине и уносит данные. В менеджере пакетов pnpm v10 есть настройки, которые сильно усложняют такой сценарий.
Скрипты установки там выключены по умолчанию. А minimumReleaseAge откладывает установку только что опубликованных версий: большинство взломанных пакетов обнаруживают и снимают за считанные часы.
Мягкий вариант конфига из статьи:
# pnpm-workspace.yaml
Урок курса «Python-разработчик. Продвинутый уровень»
Хотите, чтобы окружение проекта собиралось одинаково у всех?
29 октября в 20:00 на открытом уроке разберем, как описать зависимости с помощью uv. Если заинтересовало, зарегистрируйтесь!