Вступ до JadePHP, PHP
На сьогоднішній день існують десятки движків шаблонів з опціями типу 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. Ось цей Jade я хочу розглянути в цій статті; або більш конкретно порт PHP JadePHP.
Haml та Jade
Було б недоглядом не згадати у розмові про Jade Haml. Від якого Jade власне і походить - дійсно існує кілька бібліотек для використання Haml з PHP.
У чому різниця між ними?
Більшість движків шаблонів включають в себе написання цільової розмітки і «вкраплення» в неї наповнювачів та/або основної логіки – в деякому сенсі розширення. Jade також підтримує заповнювачі та логіку, але він також забезпечує скорочення для написання XML-подібних елементів.
В принципі це передбачає використання HTML, хоча ви можете легко застосовувати його для таких речей, як RSS і власне XML.
За фактом, якщо хочете, ви можете використовувати Jade просто як скорочення для HTML без його більш традиційних функцій шаблонів.
Як використовувати сховище
Сумно, але код в даний момент не доступний через Composer - хоча його досить нескладно упакувати, якщо у когось єгодину чи дві вільного часу.
Тим не менш, ви можете змусити його працювати, клонувавши сховище і виконавши include або require для вкладеного autoload.php.dist (сховище Github включає UniversalClassLoader від Symfony).
Ось приклад, взятий з одного опису проекту, який припускає, що сховище було завантажено до каталогу jade :
Він компілюватиме файл template.jade і виконуватиме echo для його вмісту.
Простий приклад
Давайте розглянемо простий приклад, який виводить повну або базову HTML-сторінку, всього з двома змінними і без логіки (поки!):
Важливо: Ви повинні використовувати два пробіли для відступу. Це єдиний метод, який в даний час розпізнає Jade PHP і використання чогось іншого може призвести до помилок або некоректного складання розмітки.
Відразу стає очевидним, що Jade істотно відрізняється від HTML, до якого ви звикли. Як мінімум, в ньому немає кутових дужок і тегів, що закриваються.
Також відсутні фігурні дужки, подвійні фігурні дужки або будь-який із загальних підходів до розмітки змінних для включення до шаблону. (Тим не менше, ви можете використовувати синтаксис подвійної фігурної дужки, але це не є частиною Jade як такого).
Це дуже короткий спосіб створення розмітки. Розглянемо отриманий HTML-код:
Тепер давайте пройдемося ключовими рядками шаблону Jade , щоб отримати уявлення про те, як працює скорочення для HTML.
. 5 це скорочення для типу документа HTML5. Це єдине місце, де застосовується такий синтаксис, як три знаки оклику.
Ви також можете використати . xml, щоб скоротити, для переходів ви можете використовувати. transitional, щоб скоротити або скорочення за замовчуванням.default дає вам.
HTML-теги визначаються лише їх назвами, при цьому немає потреби їх закривати; наприклад:
Якщо ви так і залишите, то в результаті вийде:
Зверніть увагу на те, як структура документа представлена за допомогою відступів.
Ви можете помістити вміст тега після його імені через пробіл:
Якщо ви бажаєте розділити великі фрагменти вмісту на кілька рядків, використовуйте символ « »:
Цей код компілюється в:
Ви можете використовувати код, який відповідає CSS-селекторам, щоб додати ідентифікатори та класи для елементів HTML:
… дають у результаті:
Інші атрибути, такі як src, href, lang, media та ін. можна задати за допомогою дужок:
Знак рівності використовується для встановлення змінних. Як ви можете бачити вище, при компіляції шаблону Jade він перетворюється на щось на зразок цього:
Додавання логіки
Ви можете використовувати тире для введення базової умовної логіки. Ось конкретний приклад:
При компіляції шаблону це перетворюється на:
Повторення задається дуже схожими рядками:
Ви можете використовувати фільтри, щоб взяти блок тексту та обробити його деяким чином, наприклад:
Перший аргумент відповідає тексту, який використовується для розмітки тексту в шаблонах, що мають префікс двокрапка; так у наведеному вище прикладі ви можете використовувати: javascript , php і : style відповідно.
За допомогою рішень EverzetJadeFilterFilterInterface ви можете навіть задавати свої власні фільтри.
Чи варто використовувати Jade?
Сперечатись про те, яку мову шаблонів краще використовувати, зрештою, марно. У будь-якому випадку ви можете навести багато критеріїв, відповідно до яких одні мови працюютькраще, ніж інші за певних обставин, під які вони спеціально ув'язнені.
Наприклад, такі як робота на стороні клієнта чи сервера. Нарешті, вибір нерідко буває дуже індивідуальним, він залежить від того, з яким двигуном вам зручніше всього складати скрипти.
У мене немає наміру роздмухувати полум'я подібних суперечок, і сам я не хочу брати участь у дискусіях на тему того, яка мова програмування є «кращою».
Ще одна причина, з якої ви можете вирішити використовувати Jade - кількість опцій для складання шаблонів - це якщо ви використовуєте по черзі різні технології.
Якщо ви часто перемикаєтеся між, скажімо, Node.js і PHP, тоді є сенс забезпечити взаємну сумісність.
Навіщо повністю заглиблюватися у вивчення одного движка, потім використати щось ще, якщо Jade сумісний із кількома мовами?
Висновок
У цій статті я розглянув JadePHP, порт заточеного в першу чергу під Javascript движка шаблонів Jade. Я дав вам кілька порад про те, як його використовувати, і деякі ідеї щодо того, чи варто його використовувати.
Дана публікація є перекладом статті «Introduction to JadePHP», підготовленої дружньою командою проекту Інтернет-технології.