Темплейт енджините или темплейт процесорите – какво е това животно?

Тези темплейт енджини, които ще разгледаме в настоящата статия се отнасят само в контекста на уеб разработките. Тъй като има и други – например за мобилни приложения – и те са си със своите особености и характеристики, а в същото време нямат особено много допирни точки с уеб тях ще оставим или за друга статия или ще игнорираме изцяло.


Какво ще разберем за темплейт енджините от тази статия?

На първо място ще разгледаме целите и функциите които изпълняват. След това ще си отговорим на въпросите защо има темплейт енджини, къде се използват и как по-точно ни помагат в уеб разработките? И накрая разбира се ще разгледаме възможностите как да започнем или ако вече сме започнали как да продължим с изучаването на темплейт енджините.


Някои важни уточнения!

В настоящата статия ще разглеждаме думата темплейт като абстракция. Всъщност темплейт енджините буквално нито могат да се видят нито да се “пипнат”. Те извършват своята работа изцяло като междинен процес, най-често по време на изпълняване на заявката от клиента. Може би не изненадващо темплейт енджините обработват темплейтите, но това не винаги е така и на практика темплейт енджините не са зависими от темплейтите. Тъй като темплейт енджините са един вид процесори те изпълняват определени задачи, които ще разгледаме в следващите редове.  

Какви са целите и функциите на темплейт енджините

В уеб разработките от много отдавна се работи усилено за това да се редуцира нуждата от писане на код. Да – правило номер две в програмирането е да се пише колкото може по-малко код. Разбира се за по-любознателните има статия и за правило номер едно в програмирането. И така, как темплейт енджините спомагат за това да пишем по-малко код? С отговора на този въпрос стигаме и до правило номер три при програмирането – структурирането на кода. Софтуера винаги е бил нещо комплексно – множество редове код в множество файлове, които на всичкото отгоре и са от различен тип, с множество взаимозависимости обслужващи повече от една системи. Въобще голяма каша! Точно затова програмирането си е нещо трудно, и от тук може да стане малко по-ясно защо Бил Гейтс е казал че всеки трябва да може да програмира. По-горе не споменахме, че обикновено имаме и множество видове код. Да вземем за пример как в днешно време всеки един сайт (най-вероятно буквално, без изключение) е изграден? Изграден е от най-малко три езика. Даже най-вероятно и от повече, но за целите към момента да речем, че са само три. Това разбира се са езиците за уеб HTML, CSS и Javascript. И така само за начало имаме три езика и въпреки, че и трите могат да бъдат използвани в един вид файл с разширение .htm или .html то най-вероятно по-скоро са употребени в резлчини типове файлове съответстващи за вида използван език. Тоест HTML кода си е във файл с разширение .html, CSS кода е във файл с разширение .css и Javascript е поставен във файл с разширение .js. Важно е да вземем предвид, че има и още видове код в съответните им видове файлове. Знаейки, че всички видове файлове си взаимодействат помежду си не е много трудно да допуснем, как следствието от това предполага пораждането на бъркотия. За някой начинаещ това може и да не е очевидно, но ако сте такъв ще трябва просто да ни се доверите. И така, поради изброените аргументи по-горе можем да кажем, че основните цели на темплейт енджините са да ни помагат в структурирането на кода – той да бъде, по-подреден, прегледен, по-лесен за четене, писане и поддръжка.  

Къде се използват темплейт енджините?

За да си отговорим на въпроса къде можем и би следвало да използваме темплейт енджин, първо трябва да си отговорим на въпроса защо има различни видове код и съответните им видове файлове. Както вече споменахме, софтуера е нещо комплексно. С напредването на технологиите се налага и напредване в развитието на софтуера. Колкото по-сложни стават технологиите откъм хардуерно ниво, толкова по-сложен става и обслужващият ги софтуер. А за изработката на този софтуер се измислят какви ли не нови технологии, с помощта на които да се улесни работата на разработчиците. Ще изложим само два примера, въпреки че не са толкова пряко свързани с темплейт енджините и все пак имат някаква връзка.


В ранните години на развитието на уеб технологиите CSS кода се е писал не просто във html файловете а направо във html таговете.


Например:


<span color=“red”>някакъв текст</span> Когато всички са видяли, че по този начин кода се превръща в чисто и просто една бъркотия се е наложило да измислят начин по който кода да бъде по-подреден. Така се е появил style тага. Така вече по-горният код е изглеждал по следният начин: <style> span { color: red; } </style>


Тук може да видите пример с малко повече код за добиване на повече яснота.


В днешно време начините за писане и организиране на CSS са толкова различни и комплексни, че за да бъде обхваната материята би била нужна отделна специализация.


След преместването на кода в отделни блокове (с пощта на style тага), стигаме до момента при който вече целият CSS код е изнесен в отделен файл (или дори повече от един).


Вторият пример е един вид продължение на първият, при който ще намесим развитието на технологиите откъм хардуер. Става въпрос за дисплеите от една страна и тяхната разделителна способност от друга. Първо ще се върнем във времето когато нямаше съвременни мобилни устройства – имаме предвид с цветни екрани с голяма разделителна способност, което от своя страна позволява използването на съвременни интерфейси. В тези времена уеб интерфейсите са били предназначени и използвани само на десктоп среди. С появата на съвременните мобилни устройства се е явила и нуждата тези интерфейси да се адаптират за по-малки екрани. Ето така са се появили така наречените media queries в css-а. А това повярвайте много усложнява разработката на уеб интерфейсите. Сега малко за резолюциите при дисплеите. Години наред мониторите, и екраните на мобилните устройства бяха да кажем с относително ниска резолюция – да я наречем регулярна резолюция. При такова положение за зареждането на едно изображение не се изискваше никакво допълнително уточнение – тоест за изабражението нямаше никакво значение каква е резолюцията на дисплея. Но с развитието на технологиите се появиха дисплеи с много висока разделителна способност и това вече наложи – дори и на малки екрани – да се зареждат изображения с много висока разделителна способност.


Съвременният начин за писане на CSS код дори изключва ползването на css файлове и благодарение на препроцесорите се е превърнало в нещо много по-различно, от това което пише в спецификациите за езика. И така, защо се налага да работим с различни видове код и съответните им файлове. Отговорът на този въпрос е много прост – за да можем да пишем все по-сложен и голям софтуер. Но тъй като нуждите за създаването на все по-голям и сложен софтуер непрестанно се увеличават, се е наложило да се работи още в тази насока и така са се появили темплейт енджините. И така къде можем и трябва да използваме темплейт енджин? Използваме даден темплейт енджин в случаите когато пишем голям и сложен софтуер. Набързо уточняваме, че в днешно време всеки софтуер предназначен за потребители е голям и сложен. Само проектите, които ни служат за обучение може да причислим към графата “малки и прости” (което в повечето случаи дори и не е така).

Видовете темплейт енджини

Вече говорихме за различните видове код, които употребяваме при писане на софтуер. Освен че структурата е по-подредена и прегледна, различният вид код ни позволява да използваме и различни технологии. Например за да работим с бази данни в уеб е много вероятно да се наложи да използваме езикът SQL. За да напишем някакъв алгоритъм, който трябва да се изпълни на сървъра можем да използваме например езикът PHP. За същите цели можем да използваме и езикът Javascript. Темплейт енджините освен със своите характеристики и възможности, които предоставят на софтуерните разработчици се делят по вид спрямо използваният език. Например ако създаваме софтуер с помощта на PHP е много вероятно да използваме темплейт енджина Blade . Докато само пишем алгоритми на PHP код не ни се налага използването на темплейт енджин. Но когато стигнем до момент в който вече трябва да смесим PHP код с HTML код, тогава вече става много удобно да включим в употреба темплейт енджина Blade. Най-често срещаната употреба е когато трябва дадена PHP променлива да бъде извикана в HTML-а. Например: …


Същият пример мажем да вземем и за Javascript и за .NET със C# и много други езици. Вижте по-долу връзката към Уикипедия за сравнение на темплейт енджините използвани в уеб.

Как да започнем изучаването на темплейт енджините

За наша радост това всъщност е доста лесно. Лесно е понеже нужните предимства, които ни предоставят темплейт енджините не са кой знае колко много. При повечето, особено за уеб разработки даже са много еднотипни. Проблем се явява, когато започнем да използваме повече от един темплейт енджин. Всеки темплейт енджин се отличава с това, че си има свой синтаксис на който се пише кода. Въпреки че при повечето синтаксиса е много подобен, дори в много отношения напълно еднакъв е много лесно да се появи объркване. Това е някакво неудобство, но сравнено с удобството което ни предоставя всеки един темплейт енджин си струва всяко поглеждане в документацията. И така как да започнем изучаването на темплейт енджините –  ами започваме или с някой урок или курс или с четенето на документацията. Може да си кажете – да, да  колко полезно?! Но, почакайте. Ще уточним някои неща. Първо за начинаещи въобще не е препоръчително да се занимават с каквито и да било темплейт енджини. И все пак при всеки начинаещ идва времето в което вече си мисли, че не е съвсем начинаещ – за такива, препоръчваме курсовете и уроците. Вече когато започнете да се чувствате удобно с работата си с даден темплейт енджин, тогава е удачно да се премине към документацията. Дори и за хора с повече опит в програмирането, може да е трудно да навлязат напълно в използването на темплейт енджините. Това е така по причина, че такива разработчици търсят решение, а не обучение. Тоест имат проблем – софтуерен разбира се – и търсят начин за разрешаването му. Благодарение на сайтове като https://stackoverflow.com намирането на решението в много от случаите е тривиално. Проблемът на това е, че е много вероятно разработчика да не научи нищо, а просто да продължи напред. Следствието на това е, че все пак използва темплейт енджина, но на практика не знае как да го използва за друг път при нужда.


Разбира се има и случаи при които такъв подход е напълно валиден, например ако се работи по даден проект инцидентно и няма изгледи да се продължи работата дългосрочно. Все пак е повече от добре за всеки, да научи поне един темплейт енджин как работи, да може да го “попипа” и да е запознат в степен такава поне наистина да знае какво са темплейт енджините. По този начин когато се наложи да работи с друг ще му бъде лесно и приятно, а не некомфортно или дори трудно.


Засега ще спрем дотук, така и така стана доста дълга статия. Ако имате въпроси не се колебайте да ни пишете. Очаквайте следващата статия съвсем скоро

  • Съдържанието в w3schools – как определяме какво да бъде?
  • Какви новости подготвяме за W3schools.bg?
  • Защо работим с това а не с онова – платформите и библиотеките.

Статия в Уикипедия с изчерпателен списък на уеб темплейт енджините за различните езици: https://en.wikipedia.org/wiki/Comparison_of_web_template_engines