sync
This commit is contained in:
@@ -15,28 +15,46 @@ src/
|
||||
│ ├── config/ # Конфигурации и константы уровня приложения
|
||||
│ ├── providers/ # Провайдеры и обёртки приложения
|
||||
│ ├── routing/ # Конфигурация маршрутов
|
||||
│ ├── styles/ # Глобальные стили, CSS-переменные, custom media
|
||||
│ └── index.ts # Публичный API слоя
|
||||
├── screens/ # Экраны приложения
|
||||
│ └── Profile/ # Экран профиля
|
||||
│ └── ... # ui/model/index.ts
|
||||
│ └── profile/ # Экран профиля
|
||||
│ ├── profile.screen.tsx
|
||||
│ └── index.ts
|
||||
├── layouts/ # Общие шаблоны и каркасы страниц
|
||||
│ └── MainLayout/ # Основной layout
|
||||
│ └── ... # ui/index.ts
|
||||
│ └── main-layout/ # Основной layout
|
||||
│ ├── main-layout.layout.tsx
|
||||
│ └── index.ts
|
||||
├── widgets/ # Крупные блоки интерфейса
|
||||
│ └── Header/ # Виджет шапки
|
||||
│ └── ... # ui/index.ts
|
||||
│ └── header/ # Виджет шапки
|
||||
│ ├── header.widget.tsx
|
||||
│ └── index.ts
|
||||
├── features/ # Пользовательские сценарии
|
||||
│ └── auth-by-email/ # Авторизация по email
|
||||
│ └── ... # ui/model/api/index.ts
|
||||
│ ├── ui/
|
||||
│ │ └── login-form.ui.tsx
|
||||
│ ├── model/
|
||||
│ │ └── auth-by-email.store.ts
|
||||
│ ├── auth-by-email.feature.tsx
|
||||
│ └── index.ts
|
||||
├── entities/ # Бизнес-сущности
|
||||
│ └── user/ # Сущность пользователя
|
||||
│ └── ... # ui/model/api/lib/index.ts
|
||||
│ ├── model/
|
||||
│ │ └── user.store.ts
|
||||
│ ├── user.entity.tsx
|
||||
│ └── index.ts
|
||||
└── shared/ # Общие ресурсы проекта
|
||||
├── ui/ # Базовые UI-компоненты
|
||||
├── ui/ # Повторно используемые UI-элементы
|
||||
│ └── icon/
|
||||
│ ├── styles/
|
||||
│ │ └── icon.module.css
|
||||
│ ├── types/
|
||||
│ │ └── icon.interface.ts
|
||||
│ ├── icon.ui.tsx
|
||||
│ └── index.ts
|
||||
├── lib/ # Утилиты и хелперы
|
||||
├── services/ # Общие сервисы и клиенты
|
||||
├── config/ # Общие конфигурации
|
||||
├── styles/ # Глобальные стили и токены
|
||||
└── assets/ # Ресурсы
|
||||
├── images/ # Изображения
|
||||
├── icons/ # Иконки
|
||||
@@ -56,8 +74,12 @@ src/
|
||||
|
||||
## Правила организации
|
||||
|
||||
- В слоях FSD (`features`, `entities`, `widgets`, `screens` и т.д.) `ui/` используется только для дочерних элементов, которые относятся к модулю и не экспортируются отдельно. Главные компоненты, которые составляют сам слой, держат собственные `*.feature.tsx`, `*.widget.tsx` и т. п., а `ui/` служит для вспомогательных мелких компонентов.
|
||||
- В `shared/ui/` хранятся базовые UI-элементы/компоненты, которыми пользуются сразу несколько модулей; в этом случае они экспортируются наружу и не считаются «дочерними» для слоя.
|
||||
- Если модуль строится вокруг «главного» компонента (`*.feature.tsx`, `*.screen.tsx`, `*.widget.tsx`), помещайте его в корень модуля и экспортируйте через `index.ts`. Проверяйте, что `ui/` не используется просто как «контейнер» слоя.
|
||||
|
||||
- Каждый слой и модуль хранится в собственной папке.
|
||||
- Внутренние реализации разделяются на `ui`, `model`, `lib`, `api`.
|
||||
- Внутренние реализации разделяются на `ui/`, `model/`, `styles/`, `helpers/`, `lib/`, `api/`.
|
||||
- Публичный API модуля объявляется в `index.ts`.
|
||||
- Внутренние файлы не импортируются напрямую извне.
|
||||
- Не смешивать ответственность разных слоёв в одном модуле.
|
||||
|
||||
Reference in New Issue
Block a user