Важно понимать изначально основные принципы FSD
Разделение по слоям. Проект делится на логические слои, каждый из которых выполняет конкретную роль. Например:
- App — глобальные настройки приложения, маршрутизация, провайдеры контекста.
- Features — отдельные функции приложения, которые могут использоваться независимо (например, форма входа, кнопка лайка).
- Entities — бизнес-объекты, содержащие логику работы с конкретными сущностями (пользователь, статья, комментарий).
- Shared — повторно используемые компоненты и утилиты (UI-библиотеки, хелперы, константы).
Принцип изоляции. Каждый слой зависит только от более низкого. Например, Feature может использовать Entity и Shared, но не зависит от Process или App. Это позволяет минимизировать хрупкость кода и избегать циклических зависимостей.
Модульность и переиспользуемость. Каждый модуль (фича или сущность) содержит всё, что нужно для работы: компонент, логику, хуки, тесты, типы.
Однонаправленный поток данных. Слои импортируют только нижележащие слои, но не наоборот. Чётко определённый публичный интерфейс. Через него другие части приложения взаимодействуют с модулем.