Thymeleaf to silnik szablonów umożliwiający budowę elementów interfejsu użytkownika po stronie serwera (backendu).
Co ciekawe znajduje też zastosowanie w budowie aplikacji, które nie są webowe. Pozwala definiować własne atrybuty szablonów lub znaczników,
jednak domyślnie zawiera standardowe dialekty (Standard i SpringStandard), które definiują bogaty zestaw funkcjonalności.
Standardowe dialekty są łatwe do rozpoznania,
gdyż zawierają atrybuty zaczynające się od przedrostka
th.
Thymeleaf może być integrowany ze Springiem (dialekt SpringStandard) i to z pewnością jego duża zaleta.
Lekko zmodyfikowany przykład ze strony
Thymeleaf & Spring Tutorial:
Kod Springa przechowujący dane jest dostępny na wyżej wspomnianej stronie.
Minusy
W przypadku wielu systemów ważna jest ich efektywność, również w kontekście danych przesyłanych przez sieć.
Często nie jest wskazane obciążanie sieci dodatkowymi informacjami, które w tym wypadku są przesyłane, a na dobrą sprawę wydają się zbędne.
Przykładowo jeśli chcemy stworzyć tabelkę wyświetlającą dane (tak jak w przykładzie wyżej), to generowanie znaczników
table,
thead,
tr,
td
po stronie backendu
stanowi treść zwiększającą rozmiar odpowiedzi. Nie są to dane, tylko struktury czysto techniczne.
Według nas lepiej jest wysyłać jedynie to, co faktycznie jest niezbędne, a budowanie widoków i zarządzanie nimi zostawić frameworkom działającym po stronie frontendu.
Thymeleaf jest silnie związany z warstwą serwerową i jeśli nastąpi nagła potrzeba oddzielenia frontendu od backendu to mamy problem.
Nie postawimy frontendu i backendu na osobnych maszynach. Może to być dużą przeszkodą, szczególnie że w dobie szybko zmieniających się koncepcji,
taka sytuacja prędzej czy później wydaje się być nieunikniona.
Plusy
Oczywiście nie oznacza to, że Thymeleaf jest rozwiązaniem złym. W przypadku miejsc, w których trudno o frontendowca lub fullstack dewelopera,
może okazać się rozwiązaniem wyjątkowo skutecznym. Natomiast na podstawie wywiadu środowiskowego (w czasach kiedy jeszcze
prowadziliśmy korepetycje z programowania w Javie) wynika,
że sukcesywnie maleje liczba miejsc, w których tworzy się oprogramowanie z użyciem Thymeleaf.
Najczęściej używany jest on do systemów działających w zamkniętej sieci i nie wymagających zwiększonej wydajności.
W przypadku aplikacji, co do których nie ma wielkich oczekiwań od strony wizualnej i zwyczajne dobre ostylowanie w zupełności wystarcza,
użycie Thymeleaf może okazać się rozsądnym wyborem.
JSP & JSTL
Ten zestaw technologii również pozwala na budowanie widoku po stronie backendu i zwrócenie go w postaci odpowiedzi do przeglądarki.
Swego czasu było to dosyć popularne rozwiązanie, dzisiaj dużo rzadziej stosowane. Wymaga poznania i łączenia ze sobą dwóch technologii, co samo w sobie nie
brzmi najlepiej. Nie jest to też silnik szablonów tak jak Thymeleaf, a do tego pisanie w JSP, to nie to samo co tworzenie w HTML-u.
Zobaczmy teraz jak wygląda taki przykładowy fragment pliku JSP wyciągniętego z jednego z naszych starych projektów (oczywiście po zmianie wszystkich nazw własnych i bez ogólnej logiki biznesowej).
W pierwszych liniach najpierw definiujemy ustawienia strony oraz pakiety Java, których chcemy używać (bo w plikach JSP można używać kodu Java).
Później mamy biblioteki tagów
taglib (JSTL i Spring).
Następnie korzystamy z tagu JSTL ustawiającego wartości kolejnych zmiennych
<c:set/>:
Wykonujemy tutaj pętle (za pomocą kolejnego tagu JSTL), która wyświetla na stronie checkboxy z nazwami kategorii. Jak widać mamy w jednym pliku mix kilku technologii:
JSP, Java, JSTL, a nawet Spring (Springowe biblioteki tagów). Dla nas taki kod nie jest przyjazny do czytania, czy też aktualizowania. A jakie jest Wasze zdanie? :)
Podsumowanie
Temat wywołuje czasem gorące dyskusje, szczególnie wśród programistów, którzy bardzo polubili jedną z technologii i wyciągają z niej maksimum potencjału (a każda ma swoje zalety).
Jednak prawdą jest też, że w ostatnich latach firmy w swoich ofertach pracy raczej skłaniają się ku nieco innym technologiom.
Szczególnie w dużych korporacjach poszukiwani są przede wszystkim specjaliści od Angulara czy Reacta.
Natomiast, działające od lat systemy również wymagają utrzymania, więc na pewno znajdziemy oferty oczekujące znajomości
Thymeleaf czy JSP. Za tym pierwszym przemawia jeszcze fakt, że jest on wspierany i promowany przez Springa, a to dość znaczący argument.
Appa Notka.
Rozważamy wprowadzenie kolejnych materiałów w tej sekcji. Na chwilę obecną proponujemy kilka ciekawych linków, które pomogą Ci wystartować z tematem:
Projekt Thymeleaf
Thymeleaf - Szybki start
Thymeleaf & Spring Tutorial
Spring Boot Thymeleaf
Wprowadzenie do JSTL
Mapa umiejętności programisty Java
Nie jesteś biegły w Javie?
Interesuje Cię szerszy zakres wiedzy?