Адриан: «Express — это хаос Дикого Запада, NestJS — порядок современного города»

JavaScript Mastery 23 тыс. 1 ч 46 мин 4 мин 26.06.2026
Главное

В современном мире веб-разработки Express долгое время оставался стандартом де-факто для Node.js, однако по мере роста команд и сложности проектов его гибкость начала превращаться в проблему. Ведущий канала JavaScript Mastery, Адриан, представляет масштабное руководство по NestJS — фреймворку, который превращает «дикий запад» бэкенда в структурированный мегаполис, и показывает, как современные ИИ-агенты меняют сам процесс написания кода.

🏙️ От «Дикого Запада» к современному городу: зачем нужен NestJS 2:28

Адриан сравнивает разработку на Express с Диким Западом: разработчик получает чистый холст и полную свободу в выборе структуры папок и паттернов . По мнению автора, для прототипов это отлично, но в больших командах такая свобода становится обузой: разработчики начинают тратить время не на фичи, а на споры о структуре проекта. В противовес этому, NestJS — это современный город с «законами зонирования».

NestJS не заменяет Express, а строится поверх него (или Fastify), добавляя строгую структуру . Адриан выделяет три ключевых преимущества фреймворка:

🧱 Архитектурные блоки: Модули, Контроллеры и Провайдеры 8:18

Любое приложение NestJS строится вокруг модулей. Модуль группирует связанные контроллеры, сервисы и бизнес-логику одной фичи . Адриан подчеркивает, что такая организация позволяет проектам масштабироваться без хаоса. Типичный рабочий процесс запроса выглядит так: запрос попадает в контроллер («рецепционист»), который передает его в сервис («работник в тылу») для выполнения тяжелой работы с базой данных или логикой .

Контроллеры и DTO 11:48

Контроллеры отвечают за обработку входящих HTTP-запросов. Вместо ручной регистрации маршрутов, как в Express, здесь используются декораторы методов (@Get, @Post, @Delete) . Для обеспечения типизации данных на входе Адриан настоятельно рекомендует использовать DTO (Data Transfer Objects).

💉 Магия Dependency Injection: Аналогия с пиццерией 21:48

Чтобы объяснить концепцию инъекции зависимостей (DI), Адриан приводит аналогию с шеф-поваром . Неправильный подход (плотная связность) — это когда повар для каждого заказа сам едет на ферму за помидорами. Если ферма закроется, повар не сможет работать.

Правильный подход в NestJS:

  1. Шеф-повар не покидает кухню.
  2. Поставщик (NestJS) доставляет помидоры (сервисы) прямо на кухню.
  3. Повару всё равно, откуда взялись помидоры, пока они соответствуют стандарту .

В коде это реализуется через конструктор контроллера: вы просто объявляете private readonly userService: UserService, и Nest сам создает экземпляр и «внедряет» его .

🛠️ Трубопровод выполнения: Middleware, Guards и Pipes 33:21

NestJS предлагает четко определенный жизненный цикл запроса, состоящий из нескольких уровней:

🤖 Agentic Development: Разработка в 2026 году 52:01

В практической части видео Адриан демонстрирует подход, который он называет Agentic Development . Вместо того чтобы писать каждую строку кода вручную, разработчик выступает в роли архитектора, управляя ИИ-агентом (например, Claude Code).

Ключевые инструменты этого воркфлоу:

  1. MCP-серверы (Model Context Protocol): Позволяют ИИ напрямую взаимодействовать с инструментами вроде Prisma или Arcjet .
  2. JSM Skills: Набор специализированных промптов и инструкций, которые обучают ИИ-агента лучшим практикам архитектуры NestJS .
  3. Архитектурное планирование: Прежде чем писать код, агент обязан составить план (/architect), который одобряет человек .

🛡️ Безопасность и Инфраструктура: Arcjet и Better Auth 58:44

При создании реального API для хакатона Адриан делает ставку на современные облачные инструменты.

Arcjet используется для защиты приложения на уровне кода. С помощью интеграции через MCP агент сам создает сайт в панели Arcjet, получает ключи и настраивает:

Better Auth выбран как решение для аутентификации. Адриан подчеркивает важность использования ролей (Admin/Participant), которые жестко зафиксированы в базе и не могут быть изменены пользователем через API при регистрации . Для управления базой данных используется Prisma с PostgreSQL, что позволяет визуализировать данные через Prisma Studio и быстро проводить миграции .

🚀 Финальный проект: API для хакатонов 1:31:10

Итоговое приложение включает в себя:

  1. Модуль пользователя: С эндпоинтами для получения профиля и админским списком всех участников .
  2. Модуль хакатона: Позволяет админам создавать события, а участникам — записываться на них .
  3. Валидация дат: Реализована через class-validator, запрещающая создавать хакатоны в прошлом .
  4. Логика записи: Система проверяет, активен ли хакатон и не записывался ли пользователь ранее (уникальное ограничение на уровне БД), прежде чем создать запись .

Адриан заключает, что использование NestJS в сочетании с ИИ-агентами позволяет собирать «production-ready» бэкенды в разы быстрее, сохраняя при этом архитектурную чистоту, готовую к высоким нагрузкам .

💬 Цитаты

«Express — это Дикий Запад бэкенд-разработки. Он дает вам пустой холст и говорит: «Строй что хочешь».»

«Контроллер — это рецепционист. Он валидирует, но не делает тяжелую работу. Он передает её сервису — работнику в тылу.»

«Вы — архитектор. Вы направляете ИИ, он пишет код, вы проверяете и выпускаете.»

👥 Спикер
🔗 Упомянутые сайты и проекты
📖 Термины
DTO (Data Transfer Object)
Объект, определяющий форму данных, передаваемых между клиентом и сервером.
Dependency Injection
Механизм, при котором объект получает свои зависимости извне, а не создает их сам.
Guard
Компонент NestJS, определяющий, будет ли запрос обработан контроллером (авторизация).
MCP (Model Context Protocol)
Протокол, позволяющий ИИ-агентам взаимодействовать с внешними инструментами и API.
📊 Цифры
🗓 Хронология
  1. 2026-06-28 Текущая дата публикации курса по NestJS.
  2. Июнь 2026 Node.js v24 рекомендуется как LTS версия для разработки.
⚖️ Другая сторона
Технологии и IT NestJS Express Prisma Arcjet Agentic Development