mirror of
https://github.com/gromlab-ru/slm-design.git
synced 2026-08-22 15:30:16 +03:00
50 lines
2.6 KiB
Markdown
50 lines
2.6 KiB
Markdown
|
|
# Зависимости Level 1
|
|||
|
|
|
|||
|
|
> Пояснение нормативной модели зависимостей Level 1.
|
|||
|
|
|
|||
|
|
Слои задают допустимое направление связей, а модули образуют граф зависимостей.
|
|||
|
|
|
|||
|
|
## Что считается зависимостью
|
|||
|
|
|
|||
|
|
- Обычный импорт, импорт типа и реэкспорт одинаково создают архитектурную зависимость.
|
|||
|
|
- Импорт между файлами одного модуля не пересекает модульную границу и не создаёт отдельный узел графа.
|
|||
|
|
- Импорт любого внутреннего файла, сегмента или компонента считается зависимостью ближайшего модуля-владельца.
|
|||
|
|
- Вложенный модуль является обычным самостоятельным узлом графа.
|
|||
|
|
- Группы, сегменты и компоненты не являются самостоятельными узлами графа.
|
|||
|
|
|
|||
|
|
Точка входа фреймворка не является модулем. Её импорты участвуют в проверке направления слоёв, но не образуют исходящий узел графа модулей.
|
|||
|
|
|
|||
|
|
Ресурс `shared` также не является модулем. Его прямой импорт участвует в проверке направления слоёв, но не нарушает требование о публичном API модуля.
|
|||
|
|
|
|||
|
|
## Направление
|
|||
|
|
|
|||
|
|
- Модуль может импортировать модули своего или любого нижнего слоя.
|
|||
|
|
- Модули одного слоя могут импортировать друг друга.
|
|||
|
|
- Промежуточный слой не является обязательным посредником.
|
|||
|
|
|
|||
|
|
Направление слоёв определено в [Слоях](./layers.md).
|
|||
|
|
|
|||
|
|
## Связанные правила
|
|||
|
|
|
|||
|
|
- [`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-NESTED_MODULE-A010`](../rules/level-1.md#slm-l1-nested_module-a010)
|
|||
|
|
|
|||
|
|
## Публичный API
|
|||
|
|
|
|||
|
|
```ts
|
|||
|
|
// Допустимо
|
|||
|
|
import { Button } from '@/ui/button'
|
|||
|
|
|
|||
|
|
// Недопустимо
|
|||
|
|
import { Button } from '@/ui/button/button'
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Циклы
|
|||
|
|
|
|||
|
|
```text
|
|||
|
|
ui/modal → ui/button → ui/icon
|
|||
|
|
ui/icon -/→ ui/modal
|
|||
|
|
```
|