Установление строгой иерархии слоев и границ зависимостей для обеспечения горизонтальной и вертикальной развязки.
Методология FSD позволяет создавать масштабируемые и предсказуемые приложения, разделяя код на функциональные слои с четкой изоляцией ответственности.
Поток зависимостей всегда направлен вниз: верхние слои используют нижние, но никогда наоборот.
Каждый слой имеет четко определенные права импорта.
Каждая сущность (entity) — это самодостаточный модуль. Мы используем строгое разделение по подпапкам для предсказуемости и простоты поддержки.
api/: RTK Query определения.converters/: Мапперы данных (DTO <-> Domain).handlers/: Мок-обработчики (MSW).mock/: Статические фикстуры и фейки.schema/: Zod-схемы валидации.slice/: Redux-стейт и селекторы.ui/: Компоненты отображения.types/: Интерфейсы и типы данных.index.ts: Точка входа модуля.Виджеты — это "умные" блоки. Мы отделяем логику (model) от визуальной части (ui), чтобы упростить тестирование и рефакторинг.
Папка model/ содержит всё то, что делает виджет функциональным (схемы Zod, конфиги форм, локальные типы). Папка ui/ содержит только компоненты отображения.
1import { useAuthStore } from "@/entities/session"; // OK: feature -> entity
2import { Button } from "@/shared/ui"; // OK: feature -> shared1import { logoutFeature } from "@/features/auth"; // ERROR: entity -> feature (LAYER VIOLATION)