Rozdíl mezi komponentou a modulem z hlediska použití

- spiider
- Člen | 162
Ahoj, mám dotaz. Pokud bych si představil web kdy bych chtěl mít jeho jednotlivé části nezávislé na ostatních a znovupoužitelné (např. registrace uživatelů, nákupní košík, výpis a správa článku, diskuse…) tak je lepší tyto části udělat, co se týká struktury, jako zvláštní modul se složkami presenters, templates, models popř. dalšíma nebo jako komponentu?
Přijde mi to vlastně stejné – v komponente budu mít taky model, presenter a šablonu.
Můžete mi prosím nějak vysvětlit hlavní rozdíl popř. co kdy je lepší použít? Mám teď trošku hokej v pojmech asi :) díky moc

- Jiří Nápravník
- Člen | 710
V komponente nejaky modul, presenter apod není…
Modul většinou zabaluje větší funkcionalitu včetně komponent. Například budeš mít ProductsModule – kde budeš mít vše týkající se správy produktů. Přidávání, mazání, upravování, nastavovaní modulu, výpis. No a komponenta je většinou nějaká menší, například budeš chtít někde vypsat nejprodávanější zboží → komponenta, apod.
Modul může obsahovat komponenty. Komponenta moduly nikoli.

- ZZromanZZ
- Člen | 87
Je pak otázka, proč samotné moduly vůbec řešit pro něco jiného než je jenom zpřehlednění a logické oddělení kódu(tříd, komponent, presenterů, šablon, atd. atd…), když je stejně nelze jednoduše z aplikace vyčlenit a použít v jiné aplikaci.
Editoval ZZromanZZ (1. 4. 2014 15:09)

- ZZromanZZ
- Člen | 87
To si myslím, že je správně. Modul by měl být chápan jako odpojitelná součástka a použitelná někde jinde (závislosti na externích knihovnách nejsou problém). Pokud to odpojitelné nemá být asi nemá IMHO smysl moduly používat.
Další věc je ta, že Nette modul, nemusí být nutně shodný s tím, co zákazníkovi představujeme jako modul(co si zaplatí platí a co mu aktivujeme).

- Jiří Nápravník
- Člen | 710
spiider: tohle je dost individualni a zavisi to spise i na tobe, jak to chces mit. Ja bych treba modul kosik nedelal. Ale mel bych modul na objednavky a v nem by byla komponenta ci jen presenter na kosik.
ZZromanZZ: mě dává smysl rozdělit si to na moduly, i když to nejde vzít celý modul a zkopírovat ho jinam. Když máš větší aplikaci, tak je to o dost přehledníjší než mít modul backend a frontend. Stejně tak když pak budu chtít nakopírovat třeba UserModule někam, tak je to snazší vzít takhle, než to vyzobávat v backend a frontmodule. I přesto, že to není „plug&play“ – třeba mém případě je závislý usermodul na MailModule a presentery dědí z appmodule…

- spiider
- Člen | 162
Vim ze je to dost individualni ale zajimal me pohled nekoho jineho jak by to
resil. Jenom pro shrnuti:
Modul: Spis pouzit pro obsahlejsi casti
Komponenta: Spis pro mensi cast a muze byt soucasti modulu
A jeste pro priklad…dejme tomu ze bych mel modul „users“ ktery by obstaraval registraci,prihlasovani a spravu uzivatelu.
Jak by pak mohla vypadat jeho struktura?
Editoval spiider (1. 4. 2014 16:24)

- Jiří Nápravník
- Člen | 710
spiider: Zkrátka modul je taková obála/složka/namespace, která se zabývá jednou částí aplikace.
Já mám ten UserModule tak, že v něm mám ještě
FrontModule:
tam mám presenter pro prihlaseni,registraci, zapomenute heslo
komponenty – to jsou formulare pro jednotlive ty akce (registrace, prihalseni
etc)
AdminModule:
tam jsou veci tykajici se uprav z pohledu adminisratora
A v samotném UserModule mám pak ještě Modelové třídy, které jsou přímo v UserModule, protože jsou využívány obema pod-moduly.

- David Matějka
- Moderator | 6445
@ZZromanZZ: pokud je komponenta nerenderovatelna, mela by dedit od PresenterComponent