2026-01-30 02:02:32 +03:00
|
|
|
|
---
|
|
|
|
|
|
title: Структура проекта
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# Структура проекта
|
|
|
|
|
|
|
|
|
|
|
|
Раздел описывает базовую структуру проекта и принципы организации модулей на уровне папок и файлов.
|
|
|
|
|
|
|
|
|
|
|
|
## Базовая структура проекта
|
|
|
|
|
|
|
|
|
|
|
|
**Хорошо**
|
|
|
|
|
|
```text
|
|
|
|
|
|
src/
|
|
|
|
|
|
├── app/ # Инициализация приложения, роутинг, провайдеры
|
|
|
|
|
|
│ ├── config/ # Конфигурации и константы уровня приложения
|
|
|
|
|
|
│ ├── providers/ # Провайдеры и обёртки приложения
|
|
|
|
|
|
│ ├── routing/ # Конфигурация маршрутов
|
|
|
|
|
|
│ └── index.ts # Публичный API слоя
|
|
|
|
|
|
├── screens/ # Экраны приложения
|
|
|
|
|
|
│ └── Profile/ # Экран профиля
|
|
|
|
|
|
│ └── ... # ui/model/index.ts
|
|
|
|
|
|
├── layouts/ # Общие шаблоны и каркасы страниц
|
|
|
|
|
|
│ └── MainLayout/ # Основной layout
|
|
|
|
|
|
│ └── ... # ui/index.ts
|
|
|
|
|
|
├── widgets/ # Крупные блоки интерфейса
|
|
|
|
|
|
│ └── Header/ # Виджет шапки
|
|
|
|
|
|
│ └── ... # ui/index.ts
|
|
|
|
|
|
├── features/ # Пользовательские сценарии
|
|
|
|
|
|
│ └── auth-by-email/ # Авторизация по email
|
|
|
|
|
|
│ └── ... # ui/model/api/index.ts
|
|
|
|
|
|
├── entities/ # Бизнес-сущности
|
|
|
|
|
|
│ └── user/ # Сущность пользователя
|
|
|
|
|
|
│ └── ... # ui/model/api/lib/index.ts
|
|
|
|
|
|
└── shared/ # Общие ресурсы проекта
|
|
|
|
|
|
├── ui/ # Базовые UI-компоненты
|
|
|
|
|
|
├── lib/ # Утилиты и хелперы
|
|
|
|
|
|
├── services/ # Общие сервисы и клиенты
|
|
|
|
|
|
├── config/ # Общие конфигурации
|
|
|
|
|
|
├── styles/ # Глобальные стили и токены
|
|
|
|
|
|
└── assets/ # Ресурсы
|
|
|
|
|
|
├── images/ # Изображения
|
|
|
|
|
|
├── icons/ # Иконки
|
|
|
|
|
|
├── fonts/ # Шрифты
|
|
|
|
|
|
└── video/ # Видео
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**Плохо**
|
|
|
|
|
|
```text
|
|
|
|
|
|
// Плохо: слои смешаны, нет понятных границ и публичного API.
|
|
|
|
|
|
src/
|
|
|
|
|
|
├── components/
|
|
|
|
|
|
├── api/
|
|
|
|
|
|
├── styles/
|
|
|
|
|
|
└── user.ts
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## Правила организации
|
|
|
|
|
|
|
|
|
|
|
|
- Каждый слой и модуль хранится в собственной папке.
|
|
|
|
|
|
- Внутренние реализации разделяются на `ui`, `model`, `lib`, `api`.
|
|
|
|
|
|
- Публичный API модуля объявляется в `index.ts`.
|
|
|
|
|
|
- Внутренние файлы не импортируются напрямую извне.
|
|
|
|
|
|
- Не смешивать ответственность разных слоёв в одном модуле.
|