mirror of
https://github.com/gromlab-ru/slm-design.git
synced 2026-08-22 15:30:16 +03:00
51 lines
2.7 KiB
Markdown
51 lines
2.7 KiB
Markdown
|
|
# Зависимости Level 2
|
|||
|
|
|
|||
|
|
> Расширение графа зависимостей Level 1 слоем `domains`.
|
|||
|
|
|
|||
|
|
Level 2 не вводит отдельный вид зависимости. Доменные модули являются обычными узлами графа модулей, а Groups не участвуют в графе.
|
|||
|
|
|
|||
|
|
## Направление
|
|||
|
|
|
|||
|
|
Модуль слоя `domains` может импортировать:
|
|||
|
|
|
|||
|
|
- публичные API других доменных модулей;
|
|||
|
|
- публичные API модулей `infra`, `ui` и `shared`;
|
|||
|
|
- нормативные ресурсы `shared`.
|
|||
|
|
|
|||
|
|
`infra`, `ui` и `shared` не импортируют `domains`. `compositions` и `app` могут использовать публичные API доменных модулей как код нижнего слоя.
|
|||
|
|
|
|||
|
|
## Междоменные зависимости
|
|||
|
|
|
|||
|
|
Импорт между доменными модулями разрешён независимо от их Group:
|
|||
|
|
|
|||
|
|
```ts
|
|||
|
|
// domains/orders
|
|||
|
|
import type { Product } from '@/domains/catalog'
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Он создаёт обычное ребро графа модулей:
|
|||
|
|
|
|||
|
|
```text
|
|||
|
|
orders → catalog
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Обратная runtime- или type-only зависимость, создающая цикл, запрещена общим правилом Level 1.
|
|||
|
|
|
|||
|
|
## Groups и зависимости
|
|||
|
|
|
|||
|
|
Путь опциональной Group участвует в адресе модуля, но сама Group не является импортируемой сущностью. Размещение в разных Groups не запрещает импорт и не задаёт его направление.
|
|||
|
|
|
|||
|
|
Если двум бизнес-приложениям нужна гарантированная архитектурная изоляция, одной Group недостаточно: такая граница требует отдельных SLM roots или правил более высокого проектного уровня.
|
|||
|
|
|
|||
|
|
## Вложенные модули
|
|||
|
|
|
|||
|
|
Вложенный модуль домена остаётся внутренним для родительской границы. Другой домен не импортирует его напрямую и получает необходимые экспорты через API корневого доменного модуля.
|
|||
|
|
|
|||
|
|
## Связанные правила
|
|||
|
|
|
|||
|
|
- [`SLM-L1-LAYER-A002`](../rules/level-1.md#slm-l1-layer-a002)
|
|||
|
|
- [`SLM-L1-MODULE-A004`](../rules/level-1.md#slm-l1-module-a004)
|
|||
|
|
- [`SLM-L1-DEPENDENCY-A005`](../rules/level-1.md#slm-l1-dependency-a005)
|
|||
|
|
- [`SLM-L1-GROUP-R007`](../rules/level-1.md#slm-l1-group-r007)
|
|||
|
|
- [`SLM-L1-NESTED_MODULE-A010`](../rules/level-1.md#slm-l1-nested_module-a010)
|