Thanks to visit codestin.com
Credit goes to github.com

Skip to content

feature-sliced/documentation

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 

Repository files navigation

Original idea - by kof

Approach which help to define boundaries for a large application According it we can flexibly adapt and maintain mutable functionality of app.

There are multiple mentions and interpretations of feature-driven approach (see below)

This article contains common rules and principles.

πŸ’₯By Oleg Isonen (kof) - from React Berlin Talk
MISC

UPD (Jan 2021) Also, should be mentioned:

Feature Slices

  • Discoverability - discover how your software works
  • Work parallelisation - to dev software by teams, not alone
  • Controlling shared abstractions - controlling abstractions, for preventing bugs and controlling software
  • Refactoring - we can be sure what user-facing functionality we will affect
  • AB Tests - more controllable experiments, with quikly manipulating (many-ifs hell)
  • Integration tests - other tests can't cover all app logic, but integration tests is difficult to create and maintain (more meaningful an easy way)

Concepts

  • Decentralization - organize app by explicit abstractions, no interconnected monolith (app β‡’ pages β‡’ features β‡’ shared)
  • Explicit sharing - explicit rules for managing shared (common used) modules
  • Co-location - normalized structure for better project navigation (app, pages, features, shared)
  • Decoupling & Isolation - every abstraction should be isolated at most
  • Disposability - every abstraction should be optimized for remove, not modify

App structure

└── src/
    β”œβ”€β”€ app/
    β”œβ”€β”€ features/
    β”œβ”€β”€ pages/
    └── shared/

P.S. FDA - not "silver bullet"

There aren't lot projects examples that totally follow defined above rules.

Its caused by very idealistic but hard for impl principles

There is not one approved opinion how to do it (the same problem with DDD approach)

Also

See at FAQ