Въведение в JadePHP

Днес има десетки машини за шаблони с опции като Smarty, Twig (използван в предстоящата версия на Drupal) и Blade (по подразбиране за Laravel) са най-известните.

И разбира се Vanilla PHP. Преминавайки директно от PHP eRuby / ERB и Haml към Ruby / Ruby on Rails, Javascript вече има редица много популярни решения на свое разположение: Mustache, Handlebars, Hogan и EJS. Някои от тях се различават по незначителни нюанси на синтаксиса, други са по-забележими.

Един, който се различава значително от другите, е Jade, двигател, който обикновено се свързва с Javascript приложения - например, той се поддържа от Express за Node.js Extended. Това е нефритът, който искам да разгледам в тази статия; или по-конкретно PHP порт на JadePHP.

Хамл и Джейд

Би било небрежно да не спомена Джейд Хамл в разговора. От който всъщност произлиза Jade - всъщност има няколко библиотеки за използване на Haml с PHP.

Каква е разликата между тях?

Повечето машини за шаблони включват писане на целево маркиране и "впъхване" на контейнери и/или основна логика в него - в известен смисъл разширение. Jade също поддържа контейнери и логика, но също така предоставя преки пътища за писане на елементи, подобни на XML.

По принцип това предполага използването на HTML, въпреки че можете лесно да го използвате за неща като RSS и самия XML.

Всъщност, ако желаете, можете да използвате Jade само като стенограма за HTML, без неговите по-„традиционни“ функции за шаблони.

Как да използвате хранилището

За съжаление кодът в момента не е достъпен чрез Composer - въпреки че е достатъчно лесно да се опакова, ако някой има такъв.час-два свободно време.

Можете обаче да го накарате да работи, като клонирате хранилището и включите или изискате вложения autoload.php.dist (хранилището на Github включва UniversalClassLoader на Symfony).

Ето пример, взет от описание на един проект, който предполага, че хранилището е качено в директорията jade:

Той ще компилира файла template.jade и ще повтори съдържанието му.

Прост пример

Нека да разгледаме прост пример, който изобразява пълна - или основна - HTML страница само с две променливи и без логика (все още!):

Важно: Трябва да използвате два интервала за отстъп. Това е единственият метод, който Jade PHP в момента разпознава и използването на каквото и да е друго може да доведе до грешки или неправилно маркиране.

Веднага става ясно, че Jade е доста различен от HTML, с който сте свикнали. Като минимум няма ъглови скоби или затварящи тагове.

Също така липсват къдрави скоби, двойни къдрави скоби или някой от обичайните подходи за маркиране на променливи, които да се включат в шаблон. (Можете обаче да използвате синтаксиса на двойната къдрава скоба, но това не е част от Jade като такъв).

Това е много кратък метод за създаване на маркиране. Помислете за получения HTML код:

Сега нека преминем през ключовите редове на шаблона Jade, за да добием представа как работи стенограмата на HTML.

. 5 е съкращение за типа документ HTML5. Това е единственото място, където се използва синтаксис като три удивителни знака.

Можете също така да използвате. xml за съкращаване, за преходи можете да използвате. преходен към съкращаване или стенография по подразбиране.по подразбиране ви дава .

HTML таговете се дефинират само с техните имена и не е необходимо да ги затваряте; Например:

Ако го оставите така, резултатът ще бъде:

Забележете как структурата на документа е представена чрез отстъп.

Можете да поставите съдържанието на таг след името му, разделено с интервал:

Ако искате да разделите големи части от съдържание на няколко реда, използвайте знака " ":

Този код се компилира до:

Можете да използвате CSS селекторния код, за да добавите идентификатори и класове към HTML елементи:

... резултат в:

Други атрибути като src, href, lang, media и др. може да се посочи с помощта на скоби:

Знакът за равенство се използва за заместване на променлива. Както можете да видите по-горе, когато шаблонът на Jade бъде компилиран, той ще бъде преобразуван в нещо подобно:

Добавяне на логика

Можете да използвате тирета, за да въведете основна условна логика. Ето един конкретен пример:

Когато шаблонът е компилиран, това се превежда като:

Повторението е дадено от много подобни редове:

Можете да използвате филтри, за да вземете блок от текст и да го обработите по някакъв начин, така:

Първият аргумент съответства на текста, който се използва за "маркиране" на текст в шаблони с префикс двоеточие; така че в горния пример можете да използвате: :javascript , :php и :style съответно.

С решенията на EverzetJadeFilterFilterInterface можете дори да дефинирате свои собствени филтри.

Трябва ли да използвам Jade?

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

Например, като работа от страната на клиента или сървъра. В крайна сметка изборът често е много личен, в зависимост от това с кой двигател се чувствате най-комфортно, когато пишете скриптове.

Нямам за цел да разпалвам подобни спорове и самият аз не желая да участвам в дискусии за това кой език за програмиране е "най-добрият".

Друга причина, поради която може да решите да използвате Jade - броят на опциите за шаблони - е, ако редувате използването на различни технологии.

Ако често превключвате между, да речем, Node.js и PHP, тогава има смисъл да осигурите взаимна съвместимост.

Защо да изучавате изцяло един двигател, след което да използвате нещо друго, когато Jade е съвместим с множество езици?

Заключение

В тази статия разгледах JadePHP, порт на машината за шаблони на Jade, която е предназначена основно за Javascript. Дадох ви няколко съвета как да го използвате и някои идеи дали да го използвате или не.

Тази публикация е превод на статията „Въведение в JadePHP“, изготвена от приятелския екип на проекта Internet Technologies.ru