Files
docs/projects/slm-design/canons/examples/react/composition-structures.md
S.Gromov 89cc873c19
All checks were successful
CI/CD Pipeline / build (push) Successful in 44s
CI/CD Pipeline / docker (push) Successful in 1m17s
CI/CD Pipeline / deploy (push) Successful in 8s
docs: обновить архитектуру SLM compositions
- обновлена модель слоёв на app → compositions → business → infra → ui → shared
- добавлены правила composition modules и providers-сегмента
- обновлены правила монорепозитория для слоя compositions
- переписаны React-примеры под page-level композицию
- добавлен пример вариантов структуры compositions
2026-05-26 23:46:11 +03:00

2.6 KiB

title, description
title description
Структуры compositions Примеры организации слоя compositions под разные способы сборки React-приложения

Структуры compositions

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

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

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

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.

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

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

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

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 запрещены.