Już objaśniam skomplikowane pytanie ;)
Mam na myśli widoki generowane Server Side, czyli te "niemodne". Na przykład Spring MVC (bo to wszyscy rozumieją, albo przynajmniej tak myślą), choć nie skupiajmy się na tym. Na przykład widok w Ratpack
Przykład (rzeczywisty) takiego komponentu, to generyczna SuperDuperHtmlTable, powtarzająca się na wielu stronach (widokach), a służąca prezentowaniu wyników z kwerend bazodanowych, z dzieleniem tabeli na sekcie, nagłówkami, subtotalami i totalami itd...
Lub inne komponenty, np generyczny nagłówek / filtr do tych kwerend.
SuperDuperHtmlTable jest o tyle miłe, że nie charakteryzuje się stanem, czysty GET, więc możecie na razie o tym myśleć.
Mój ułomny przegląd możliwości pozwala mi odnotować następujące możliwości:
- Thymeleaf, Mustache - na obecnym etapie nie wymyśliłem, może się nie da???
- JSP View - zrobić swoje JSTL tagi, lub wyrażenie EL (hiper duper ??? jeśli w ogóle, to brzydkie)
- Facelet'sy (tak, nawet w Springu jest taka technologia widoku). Niemal jak powyżej. Swoje tagi. Na marginesie, Primefaces ma podobną SDHTable, ale niemal niemożliwe by zadziałała w tak uproszczonym cyklu życia.
Motywacje. Dla chcących zrozumieć kontekst, lub się spierać.
Od wielu lat uprawiam Apache Wicket, gdzie tworzenie komponentów to bajka, która nawet seniora nie potrzebuje, a odbywa się w czystym kodzie Java i adekwatna do komplikacji komponentu znajomość HTML (czyli bardzo niska). Kompozycja lub dziedziczenie, sama elegancja.
W naturalny sposób jest stanowy (statefull) ale można bezstanowy (stateless). Perfekcyjnie się AJAXuje
Inne komponentowe frameworki (zarazem są statefull) to
- Vaadin, najbardziej podobny do Wicketa, stoją za nim znaczne pieniądze. Raczej nie jest "niemodny", ma starter w Boocie.
- JSF (mam znajomość na pozimie troszkę wyższym niż HelloWorld, nie uprawiam na produkcji). Powołanie komponentu już jest sporo trudniejsze, ale możliwe
- Apache Tapestry. W latach gdy wybierałem technologię, wymagał 3 plików per komponent (XML/HTML/Java), obecnie zredukowali. Nie mam szczegółowej wiedzy.
Jestem niepomiernie zdziwiony, jaki wielki krok wstecz bym musiał wykonać, przechodząc do "modnych" technologii. Nie chcę w tym poście się zagłębiać w dyskusje nt Client Side, krótko jest mi (niemal) zbędne.
Wracając do pytania o bardziej surowy View, np Springowy, jakie pomysły mi podrzucicie do poczytania / popróbowania.