Перейти к основному содержимому

Обзор

Layer - первый уровень разбиения приложения, согласно скоупу влияния модуля

layers-flow-themed

Структура#

└── src/    ├── app/                    # Инициализирующая логика приложения    ├── processes/              # (Опц.) Процессы приложения, протекающие над страницами    ├── pages/                  # Страницы приложения    ├── widgets/                # (Опц.) Самостоятельные виджеты    ├── features/               # Ключевая функциональность приложения    ├── entities/               # Бизнес-сущности    └── shared/                 # Переиспользуемые модули

Правила#

  • Каждый слой располагается только на самом верхнем уровне, и не может встречаться еще раз на другом уровне вложенности

    // Плохо- pages/../features/..- features/../entities/..// Хорошо+ pages/**+ features/**
  • Каждый слой может использовать (импортировать) только нижележащие слои

  • Чем выше расположен слой, тем выше уровень его ответственности и знаний о других слоях (сверху-вниз)

    • app > (processes) > pages > (widgets) > features > entities > shared
  • Чем ниже расположен слой - тем он больше используется в верхних слоях, а значит и тем больше опасности вносить в него изменения (снизу вверх)

    • shared > entities > features > (widgets) > pages > (processes) > app
LayerCan useCan be used by
appshared, entities, features, widgets, pages, processes-
processesshared, entities, features, widgets, pagesapp
pagesshared, entities, features, widgetsprocesses, app
widgetsshared, entities, featurespages, processes, app
featuresshared, entitieswidgets, pages, processes, app
entitiessharedfeatures, widgets, pages, processes, app
shared-entities, features, widgets, pages, processes, app

Представители#

note

Стоит понимать, что не все из приведенных слоев обязательны, а нужны лишь, когда этого требует сложность проекта и разбухающая ответственность в существующей структуре

app#

app-themed-bordered

processes#

processes-themed-bordered

pages#

pages-themed-bordered

widgets#

widgets-themed-bordered

features#

features-themed-bordered

entities#

entities-themed-bordered

shared#

shared-themed-bordered

См. также#