Skip to content

feature-sliced/documentation

Repository files navigation

feature-sliced

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

Overview

Методология помогает определять и стандартизировать разбиение модулей для больших и долгоживужих проектов.

В соответствие с ней, становится проще поддерживать и адаптировать изменяющуюся функциональность приложений.

См. также "Требования к архитектуре"

Мотивация

Стандартизация проектных знаний и решений, подкрепленная обширным опытом разработки.

Методология агрегирует лучшие практики и паттерны проектирования, с адаптацией под специфику разработки фронтенд-проектов (базируясь на разделении ответственности модулей)

Ведь практик и паттернов много (SOLID, GRASP, DDD), но устоявшиеся и конкретные подходы - крайне трудно найти

См. также "Мотивация создания методологии"

Концепции

Public API, Isolation, ...

Структура

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

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. Это не "серебряная пуля"

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

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

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

См. также


  • Discussions Дискуссии по методологии

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

    Все это в совокупности влияет на спецификацию, тулкит и в целом - на дальнейшее видение и развитие методологии

    Т.е. все, чего пока нет в спецификации/тулките - так или иначе обсуждается в github-discussions

  • Contributing Как можно помочь?
    • ⭐ Оцените нас на GitHub, если у вас остались положительные впечатления

      Или если по-вашему этот проект должен развиваться дальше

    • 💫 Ознакомьтесь с нашим contributing гайдом

      Важно любое содействие - от фидбека до участия в самой разработке!

tg          twitter          open-collective          youtube