mirror of
https://github.com/gromlab-ru/slm-design.git
synced 2026-08-22 07:30:16 +03:00
4.7 KiB
4.7 KiB
layout, title, description, hero, features
| layout | title | description | hero | features | |||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| home | SLM Design | Архитектура фронтенд-приложений с явным владением ответственностями |
|
|
SLM Design (Scoped Layered Module Design) — структурная архитектура фронтенд-приложений, основанная на явном владении ответственностями.
Архитектурное решение начинается не с папки или имени файла. Сначала определяется ответственность, затем её владелец, роль владельца в приложении и только после этого физическое размещение кода.
Основа
SLM использует четыре структурных понятия:
- Слой классифицирует код по архитектурной роли и ограничивает направление зависимостей.
- Группа помогает классифицировать модули внутри слоя, но ничего не реализует и ничем не владеет.
- Модуль владеет самостоятельной ответственностью, её публичным API, зависимостями, состоянием и жизненным циклом.
- Сегмент организует внутреннее содержимое одного модуля и не создаёт нового владельца.
Слой → [Группа*] → Модуль → [Сегмент*]
Знак * означает, что элементов может не быть или их может быть несколько. Группы могут быть вложены друг в друга внутри одного слоя. Сегменты всегда остаются внутри одного модуля.
Документация
Архитектура
Правила
Справочные материалы
Порядок принятия решения
- Сформулировать ответственность без упоминания папок, файлов и библиотек.
- Назначить одного владельца ответственности.
- Выбрать слой по роли владельца.
- Определить публичный контракт, зависимости, состояние и жизненный цикл.
- Организовать реализацию сегментами, если это упрощает навигацию.
- Представить принятое решение папками, файлами и публичными точками входа.