2015. április 28.

Template-kezelő rendszerek

10 perc olvasási idő

Template-kezelő rendszerek

Annak idején, amikor kezdtem a webes programozást, megszokott volt, hogy olyan kódokat írjak és lássak, ahol az adatok lekérdezése, kezelése és megjelenítése, illetve az oldal felépítése egy fájlba volt ömlesztve, emiatt nehezen átlátható, robusztus és nem túl rugalmas kódok voltak. Ennek oka az volt, hogy még tapasztalatlan voltam kevés tudással és nem tudtam, hogy lehet ezt másképp is.

Biztos ismerős helyzet sokak számára, amikor újra és újra előkerül ugyanaz a html kód az oldalon. Például amikor cikkeket és kategóriákat (recepteket, videókat, képeket) listázol. Legtöbb esetben a listák hasonló felépítésűek és hasonlóképpen jelennek meg, de sok más hasonló vagy ugyanolyan felépítésű elem is előfordulhat az oldalon. Ennek ellenére gyakran az történik, hogy mindegyik ilyen elem külön található meg a kódban, vagyis feleslegesen kódot duplikálsz és plusz munkát végzel. Ráadásul, ha később valamilyen módosítást kell végrehajtani az oldal egy elemén, akkor a kódban minden egyes helyen módosítanod kell, ahelyett hogy ezt csak egyszer tennéd meg.

Hogyan kerülheted el ezeket a problémákat?

Ezért születtek a template-kezelő (sablon) rendszerek, melyekből mára már elég sokféle létezik. A lényegük, hogy segítenek külön választani az üzleti logikát az adatok megjelenítésétől és éppen ezért az MVC alapú keretrendszerek szerves részét képezik.

Mi is az MVC (model-view-controller)? Egy olyan szerkezeti minta, ami rétegekre bontja az alkalmazást azért, hogy az adatok elérése, az üzleti logika és az adatok megjelenítése elkülönüljenek egymástól. A model (modell) gondoskodik az adatok eléréséről, a view (nézet) pedig arról, hogy az adatok a felhasználó számára megfelelő módon jelenjenek meg, végül a controller (vezérlő) feladata, hogy összegyűjtse az adatokat és átadja a megfelelő view-nak megjelenítésre. Ez a minta csökkenti a szerkezeti bonyolultságot és megnöveli a rugalmasságot, illetve a felhasználhatóságot.

Az MVC-ben a korábban említett template-kezelő rendszerek tulajdonképpen a view-k, amelyek megjelenítik az adatokat. Ezek a template-ek újra felhasználhatóak és több részre bonthatóak. Egymásba is ágyazhatod őket – akár többször is – és tartalmaznak számos hasznos funkciót, melyek segítenek az adatok megjelenítésében, az egyszerűbb szerkezet elérésében. Például rendelkeznek vezérlési szerkezetekkel, így bizonyos dolgokat feltételhez köthetsz, ami hasznos tud lenni olyankor, amikor többféle hasonló megjelenítendő elem van az oldaladon, de valamiben mégis kicsit eltérnek. Ezeken felül használhatsz ciklusokat is, amivel létrehozhatsz ismétlődő HTML elemeket és töltheted fel őket egyszerűen adatokkal.

Milyen template-kezelő rendszert használj?

Nos ez egy olyan kérdés, amiről mindenkinek megvan a maga véleménye, a magyar közösségben nagyon elterjedt Smarty egy lehetséges opció, de vannak más jó template-kezelők is. Ilyen például a Twig, amely több MVC keretrendszer részét is képezi. Ajánlom a Composert, amivel könnyedén telepítheted a Twiget más keretrendszerekhez is. A Composer egy csomagkezelő, amivel letöltheted a szükséges csomagokat úgy, hogy megadod neki a függőségeket egy JSON alapú konfigurációs fájlban, majd parancssorból lefuttatod.

Sok keretrendszernek megvan a maga template-kezelő rendszere, mint például a Laravelnek a Blade, vagy a Phalconphp-nek a Volt. Ezek használata meglehetősen hasonló, de azért van némi eltérés a szintaktikájukban. Érdemes lehet kipróbálni többfélét is. Számomra a Twig eddig a legjobb választás. Rövid, egyszerű a szintaktikája és mindent tud, ami kellhet. Például könnyedén el lehet vele tüntetni a whitespace-eket, így a sokak által használt megoldás végre feledésbe merülhet, amikor inline-block elemeket szeretnél egymás mellé tenni.

Hagyományos megoldás:


<div><!–
        –><div>foo</div><!–
        –><div>foo</div><!–
–></div>

Twiges megoldás:


{% spaceless %}
        <div>
                <div>foo</div>
                <div>foo</div>
        </div>
{% endspaceless %}

A Twig rengeteg remek dolgot tud még, ezek mind megtekinthetőek leírással és példákkal a dokumentációjában.

Fontos szerepe van a kód tisztaságának, egyszerűségének és átláthatóságának. A rugalmasságról már nem is beszélve. Érdemes elgondolkodnod azon, hogy kipróbálj te is egy, vagy akár több template-kezelő rendszert. Véleményedet és tapasztalatodat oszd meg velem hozzászólásként, örömmel veszem. ;)

Sinka Károly

Szeret új és jobb megoldásokkal ismerkedni és backend területen érzi jól magát. Metál és hangszer kedvelő, szabadidejében gitározik. A PC-s játékokat sem veti meg és anime függő.

fps ecosystem

Hozzászólások