Každý projekt začíná nevinně — složka components/
, pár základních souborů jako Button.jsx
, Header.jsx
, Card.jsx
… a všechno vypadá přehledně. Jenže po pár měsících (nebo letech) se z té složky stane černá díra. Komponenty mají podobné názvy, někdy dělají skoro totéž, ale přesto jsou jiné. A onboardovat nového vývojáře do takového projektu? Peklo.
Postupem času jsem si začal víc všímat, že struktura komponent není jen otázka estetiky nebo osobní preference. Je to architektonické rozhodnutí, které ovlivňuje škálovatelnost projektu, konzistenci, ale i mentální pohodu celého týmu. Proto jsem si vytvořil svůj vlastní, „opinionated“ systém, který mi už roky pomáhá držet pořádek v projektech, kde komponenty rostou geometrickou řadou.
Proč vůbec řešit strukturu komponent?
Většina článků o architektuře frontend projektů se soustředí na technologie, knihovny, performance nebo build procesy. Ale málokdo řeší, jak vůbec komponenty kategorizovat. A přitom právě tohle rozhoduje o tom, jestli se v projektu dokážeš zorientovat za minutu — nebo za půl dne.
Potřeboval jsem systém, který:
- se dá škálovat – zvládne stovky komponent bez chaosu,
- je čitelný a konzistentní,
- umožňuje rychlý onboarding nových lidí,
- a má jasně definované úrovně zodpovědnosti – co má komponenta dělat a co už ne.
Po několika iteracích jsem si vytvořil přístup, který se mi dlouhodobě osvědčil. Zjednodušeně řečeno – komponenty rozděluju podle úrovně jejich abstrakce a zodpovědnosti.
Můj systém vrstev
Každá komponenta má své místo a jasný účel. Díky tomu se v projektu dá rychle zorientovat, i když ho otevřu po půl roce.