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

Глоссарий

Module

Структурная единица проекта

Под модулем обычно подразумевается определенный файл или директория (абстракция в контексте структуры)

  • модуль авторизации
  • модуль страниц
  • модуль компонента в фиче
  • модуль экшенов в модели сущности
  • и т.д.

Layer

Каждая из директорий, находящихся на самом верхнем уровне приложения.

Этот уровень определяет скоуп ответственности модулей, а также уровень опасности изменений

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

Slice

Каждый из элементов, находящихся на верхнем уровне слоёв

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

├── app/
| # Не имеет конкретных слайсов,
| # Т.к. там содержится мета-логика над проектом и его инициализации
├── processes/
| # Слайсы для реализации процессов на страницах
| ├── payment
| ├── auth
| ├── quick-tour
| └── ...
├── pages/
| # Слайсы для реализации страниц приложения
| # При этом, в силу специфики роутинга - могут вкладываться друг в друга
| ├── profile
| ├── sign-up
| ├── feed
| └── ...
├── features/
| # Слайсы для реализации конкретной функциональности на страницах
| ├── auth-by-phone
| ├── inline-post
| └── ...
├── entities/
| # Слайсы бизнес-сущностей для реализации более сложной БЛ
| ├── viewer
| ├── posts
| ├── i18n
| └── ...
├── shared/
| # Не имеет конкретных слайсов
| # Представляет собой скорее набор общеиспользуемых сегментов, без привязки к БЛ

Segment

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

Этот уровень определяет назначение модулей в коде и реализации, согласно классическим моделям проектирования

{layer}/
├── {slice}/
| ├── ui/ # UI-логика (components, ui-widgets, ...)
| ├── model/ # Бизнес-логика (store, actions, effects, reducers, ...)
| ├── lib/ # Инфраструктурная логика (utils/helpers)
| ├── config/ # Конфигурация приложения (env-vars, ...)
| └── api/ # Логика запросов к API (api instances, requests, ...)
note

Поскольку не каждый из слоев в явном виде использует слайсы (app, shared)

  • Сегменты могут располагаться по своим правилам shared/{api, config}
  • Или не использоваться совсем app/{providers, styles}

См. также