Files
slm-design/DRAFT/architecture/domains.md
S. Gromov 691069af8e sync
2026-08-10 09:12:22 +03:00

2.6 KiB
Raw Blame History

Модули слоя domains

Пояснение размещения предметных ответственностей в обычных SLM-модулях.

Связанные правила

Обычные модули SLM

Модуль слоя domains является обычным SLM-модулем. Он отличается от модулей других слоёв только предметной ответственностью, а не отдельной архитектурной сущностью или обязательной файловой формой.

domains/auth/
├── hooks/
├── services/
├── stores/
├── types/
├── ui/
└── index.ts

Показанные каталоги являются возможными сегментами, а не обязательным каркасом. Модуль может содержать предметные типы, сценарии, состояние, framework-код, компоненты и вложенные модули.

Публичный API

Внешний код использует модуль через его обычный публичный API:

import { signOut, useSession } from '@/domains/auth'

Глубокий импорт во внутренний сегмент нарушает модульную границу:

import { useSession } from '@/domains/auth/hooks/use-session'

Groups

При большом количестве модулей слой domains может содержать обычные навигационные Groups:

domains/
├── shop/                 # Group
│   ├── catalog/          # SLM-модуль
│   └── orders/           # SLM-модуль
└── cabinet/              # Group
    └── profile/          # SLM-модуль

Group не имеет index.ts, реализации, состояния или публичного API. Она не создаёт dependency boundary и не реэкспортирует содержащиеся в ней модули.

Среды выполнения

Если части публичного API модуля предназначены для разных сред выполнения, модуль сохраняет одну ответственность и разделяет доступ фасетами client, browser и server.