Чистая архитектура в Next.js
Чистая архитектура, описанная Робертом Мартином, предлагает системный подход к организации кода, при котором бизнес-логика не зависит от фреймворков, баз данных и внешних сервисов.
Основной принцип
Зависимости направлены внутрь, к домену. Бизнес-правила не должны зависеть от UI-фреймворка или базы данных. Страницы Next.js — лишь механизм доставки для доменной логики.
Структура слоёв
На практике мы делим Next.js-проекты на слои:
- Доменный слой — чистая бизнес-логика, без внешних зависимостей
- Прикладной слой — оркестрирует сценарии использования
- Инфраструктурный слой — доступ к БД, API-вызовы, внешние сервисы
- Слой представления — React-компоненты, только UI
Преимущества для тестирования
Разделение немедленно даёт плоды при тестировании. Доменная логика тестируется простыми юнит-тестами без моков. Сценарии использования проверяются через фейковые реализации репозиториев.
Server Components как точки входа
Ключевая деталь реализации в Next.js — грамотное использование Server Components и Server Actions. Server Components становятся точкой входа, связывающей всё воедино: вызывают сценарии использования и передают результаты Client Components для интерактивности.