Skip to content

Структуры compositions

Раздел показывает, что SLM не фиксирует жёсткую структуру внутри compositions. Команда выбирает организацию под фреймворк, роутинг, CMS и продуктовую задачу.

Базовая рекомендация

Подходит для большинства приложений, где есть явные страницы, layouts, screens и переиспользуемые композиционные блоки.

text
src/compositions/
├── pages/
│   ├── home/
│   └── profile/
├── layouts/
│   ├── main/
│   └── dashboard/
├── screens/
│   ├── home/
│   └── profile/
└── widgets/
    ├── page-heading/
    └── promo-banner/

pages, layouts, screens и widgets здесь не являются отдельными SLM-слоями. Это типы composition modules внутри одного слоя compositions.

Entry-points и blocks

Подходит для проектов, где точка сборки не всегда является страницей: CMS registry, embedded UI, route entries, feature entries.

text
src/compositions/
├── entry-points/
│   ├── cms-profile/
│   └── embedded-checkout/
├── pages/
│   └── profile/
├── layouts/
│   └── profile-main/
├── screens/
│   └── profile/
└── blocks/
    ├── profile-summary/
    └── recommended-products/

Группировка вокруг продукта

Подходит, когда удобнее держать все части одной крупной области рядом.

text
src/compositions/
└── profile/
    ├── page/
    ├── layout/
    ├── screen/
    └── blocks/

Главное правило

Любая структура допустима, если соблюдаются границы слоя:

  • app подключает готовые composition modules к фреймворку.
  • compositions может импортировать business, infra, ui, shared.
  • business, infra, ui, shared не импортируют compositions.
  • Импорты между composition modules идут только через public API.
  • Deep imports внутрь composition modules запрещены.