2.8 KiB
2.8 KiB
title
| title |
|---|
| Архитектура |
Архитектура
Архитектура построена на FSD (Feature‑Sliced Design) и строгих границах модулей. Цель — разделить ответственность, упростить сопровождение и контроль зависимостей.
Принципы
- Разделять UI, бизнес-логику и инфраструктуру.
- Держать зависимости однонаправленными.
- Открывать наружу только публичный API модулей.
- Не допускать циклических зависимостей.
Слои
- app — инициализация приложения, роутинг, конфигурации, глобальные провайдеры.
- screens — экраны и их композиция.
- layouts — каркас и шаблоны страниц.
- widgets — крупные блоки интерфейса, собирающие несколько сценариев.
- features — отдельные пользовательские действия и сценарии.
- entities — бизнес-сущности и их модель.
- shared — переиспользуемая инфраструктура, утилиты и базовые UI‑компоненты.
Правила зависимостей
- Допустимые импорты идут сверху вниз:
app → screens → layouts → widgets → features → entities → shared. - Импорты между слоями — через публичный API.
- Внутри одного слоя — относительные импорты.
Публичный API модулей
- Каждый модуль экспортирует наружу только то, что нужно другим слоям.
- Внешние импорты идут только через
index‑файл модуля. - Внутренние файлы не импортируются напрямую извне.
Границы ответственности
- Бизнес‑логика не размещается в UI‑компонентах.
- UI‑компоненты должны быть максимально простыми и предсказуемыми.
- Связь между независимыми сценариями поднимается на уровень выше.
Типовые ошибки
- Импорт из более высокого слоя в более низкий.
- Смешивание логики нескольких слоёв в одном модуле.
- Прямые импорты внутренних файлов, минуя публичный API.