2026-01-29 16:00:19 +03:00
---
title: Архитектура
---
# Архитектура
2026-03-18 09:22:03 +03:00
Архитектура построена на FSD (`Feature‑ Sliced Design` ) и строгих границах модулей.
2026-01-29 16:00:19 +03:00
Цель — разделить ответственность, упростить сопровождение и контроль зависимостей.
## Принципы
- Разделять UI, бизнес-логику и инфраструктуру.
- Держать зависимости однонаправленными.
- Открывать наружу только публичный API модулей.
- Н е допускать циклических зависимостей.
2026-03-18 09:22:03 +03:00
## Слои (FSD)
2026-01-29 16:00:19 +03:00
- **app** — инициализация приложения, роутинг, конфигурации, глобальные провайдеры.
- **screens** — экраны и их композиция.
- **layouts** — каркас и шаблоны страниц.
- **widgets** — крупные блоки интерфейса, собирающие несколько сценариев.
- **features** — отдельные пользовательские действия и сценарии.
- **entities** — бизнес-сущности и их модель.
- **shared** — переиспользуемая инфраструктура, утилиты и базовые UI‑ ко мпо не нты.
2026-03-18 09:22:03 +03:00
## Модули (FSD)
- Модуль — это отдельная папка в слоях `screens` , `layouts` , `widgets` , `features` , `entities` , которая реализует один сценарий/блок. В корне модуля лежит главный файл (`*.screen.tsx` , `*.layout.tsx` , `*.widget.tsx` , `*.feature.tsx` , `*.entity.tsx` ) и публичный API (`index.ts` ).
- Внутри модуля используются подпапки (по необходимости):
- `ui/` — дочерние UI‑ ко мпо не нты модуля.
- `model/` — состояние и бизнес‑логика модуля.
- `styles/` — локальные стили модуля.
- `helpers/` — локальные хелперы.
- `lib/` — утилиты модуля.
- `api/` — API‑ вызо вы модуля.
2026-01-29 16:00:19 +03:00
## Правила зависимостей
- Допустимые импорты идут сверху вниз: `app → screens → layouts → widgets → features → entities → shared` .
- Импорты между слоями — через публичный API.
- Внутри одного слоя — относительные импорты.
## Публичный API модулей
- Каждый модуль экспортирует наружу только то, что нужно другим слоям.
- Внешние импорты идут только через `index` ‑файл модуля.
- Внутренние файлы не импортируются напрямую извне.
## Границы ответственности
- Бизнес‑логика не размещается в UI‑ ко мпо не нта х .
- UI‑ ко мпо не нты должны быть максимально простыми и предсказуемыми.
- Связь между независимыми сценариями поднимается на уровень выше.
## Типовые ошибки
- Импорт из более высокого слоя в более низкий.
- Смешивание логики нескольких слоёв в одном модуле.
- Прямые импорты внутренних файлов, минуя публичный API.