Skip to content

feature-sliced/documentation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

feature-sliced

Методология, помогающая определять разбиение модулей и связи между ними в приложении

Overview

feature-sliced - структурная методология для JavaScript фронтенд проектов

Основные идеи:

  • разделить логику приложения не по типам, а по функциональности приложения, т.е. согласно бизнес-ценностям

    См. также separation of concerns, vertical-slices, feature-based

  • группировать слайсы БЛ по слоям и скоупу влияния

    app > *processes > pages > features > entities > shared

Структура

См. также "Абстракции методологии" и "Разбиение приложения"

WIP: Нейминг групп временный, и будет определен окончательно ближе к релизу MVP

└── src/ ├── app/ # Layer: Приложение | # ├── processes/ # Layer: Процессы (опционален) | ├── {some-process}/ # Slice: (н-р процесс CartPayment) | | ├── lib/ # Segment: Инфраструктурная-логика (хелперы) | | └── model/ # Segment: Бизнес-логика | ... # | # ├── pages/ # Layer: Страницы | ├── {some-page}/ # Slice: (н-р страница ProfilePage) | | ├── lib/ # Segment: Инфраструктурная-логика (хелперы) | | ├── model/ # Segment: Бизнес-логика | | └── ui/ # Segment: UI-логика | ... # | # ├── features/ # Layer: Фичи | ├── {some-feature}/ # Slice: (н-р фича AuthByPhone) | | ├── lib/ # Segment: Инфраструктурная-логика (хелперы) | | ├── model/ # Segment: Бизнес-логика | | └── ui/ # Segment: UI-логика | ... # | # ├── entities/ # Layer: Бизнес-сущности | ├── {some-entity}/ # Slice: (н-р сущность User) | | ├── lib/ # Segment: Инфраструктурная-логика (хелперы) | | ├── model/ # Segment: Бизнес-логика | | └── ui/ # Segment: UI-логика | ... # | # ├── shared/ # Layer: Переиспользуемые ресурсы | ├── api/ # Segment: Логика запросов к API | ├── lib/ # Segment: Инфраструктурная-логика (хелперы) | └── ui/ # Segment: UI-логика | ... # | # └── index.tsx/ #

P.S. Это не "серебряная пуля"

Не так много примеров проектов, которые полностью следуют правилам и принципам методологии, с сохранением преимуществ

Это связано с тем, что принципы вырисовывают очень идеальную архитектуру в теории, но сложную в реализации

На данный момент ведется активная работа над тем, чтобы соединить опыт многих разработчиков и выразить его в единой методологии, помогающей в реализации методологии в проектах

См. также