Pull to refresh

Иллюзии XML/XSLT технологий

Website development *XML *
Иногда в компьютерном мире происходят всплески интереса к той или иной технологии. Всплески не случайные, а явно поддержанные производителями этих технологий. Это и не удивительно, ведь сложно продавать одно и то же, проще продавать что-то новое или старое, но названное иначе. Ничто так хорошо не продается, как функция, которой нет в прошлой модели. Почему так устроен потребитель? А мнение потребителя банально эксплуатируется, ему просто навязывается желание. Крупные производители ПО очень часто исчерпывают рынок сбыта и нуждаются в постоянной смене технологий для того, чтобы продать обновления и просто увеличить цены на программы. Ну и проще отстраиваться от конкурентов, заверяя, что у нас лучшие и новейшие технологии.

Так случилось с XML. Ведь XML — это, в общем-то, ничего нового. XML — это упрощённое подмножество языка SGML, который берет свое начало еще в GML 1960 года выпуска компании IBM. XML, по сути, просто стандартизировал формат обмена информацией и все.

Но случилось чудо, мы получили XML и появился объект для рекламы и производители начали на каждом углу заявлять, что у них уже и базы данных с XML и вообще все пропитано XML.
Читать дальше →
Total votes 27: ↑20 and ↓7 +13
Views 3.4K
Comments 24

Контекстные шаблоны в Native PHP

Lumber room
Священая война шаблонов продолжается по сей день. На одной стороне выступают «угловатые», называемые так за то, что на погонах у них значится <? и ?>. Вообще говоря тут надо использовать единственное число, поскольку «угловатый» он один большой и неуклюжий медведь. А противостоит ему целая армия более мелких «кучерявых». Они все в разной форме, но чаще всего на погонах можно увидеть знаки { и }. Война идет затяжная с переменным успехом обеих сторон. Где-то в стороне стоит и наблюдает «независимый» XSLT, но его мы упомянули только для проформы, поскольку речь пойдет не о нем, а о любви.
Читать дальше →
Total votes 24: ↑12 and ↓12 0
Views 1.4K
Comments 32

Идеальный шаблон, какой он?

PHP *
Тем, кто ежедневно стыкается с разработкой сайтов, наверняка приходится работать с шаблонами, вот и мне пришлось. Как всегда, наличие выбора отбирает свободу действия. Типов шаблонов и готовых решений – огромное множество, я остановился на таких вариантах:

Вариант 1.

<!--Begin[News_List]-->
 <!--Begin[News_ListItem]-->
  {date} <a href="{link}">{title}</a>
  <br />
  {header}  
 <!--End[News_ListItem]-->
 <!--Begin[News_ListItemEdit]--><a href="#">edit</a><!--End[News_ListItemEdit]-->
<!--Begin[End_List]-->

Достоинства: понятный, читабельный в паре с html
Недостатки: громоздкий

Вариант 2.

<? foreach($news as $item) { ?>
<?=$item->date?> <a href="<?=$item->link?>"><?=$item->title?></a>
<br />
<?=$item->header?>
<? if($permitted) { ?><a href="#">edit</a><? } ?>
<? } ?>

Достоинства: шустрый
Недостатки: нечитабельный, так и хочется дописать логику к отображению

Вариант 3.

<component name="news">
 <item>
  {date} <a href="{link}">{title}</a>
  <br />
  {header}   
  <secured roles="{roles}"><a href="#">edit</a></secured>
 </item>
</component>

Достоинства: понятней некуда, присутствует что-то родное 
Недостатки: нечитабельный в паре с html

В примерах представлено отображение списка новостей.
Хотелось бы прийти к оптимальному результату, по этому интересует мнение опытных front-end разработчиков. Возможно, есть лучше варианты — буду рад рассмотреть.
Total votes 22: ↑9.5 and ↓12.5 -3
Views 1.1K
Comments 27

Споры о шаблонизаторах: троллинг или умные мысли?

PHP *
причины родились в том, что в топах посвященных обзорам конкретных шаблонизаторов спорят на обобщенную тему:
Обзор шаблонизатора Quicky: Производительность и Гибкость.
MACRO — гибкий PHP шаблонизатор, с человеческим «лицом»
раследование проведено на основе данных, полученных в топе:
HolyWar: Шаблонизаторы. Нужны ли они? состоятельны ли они? Форум.
результаты расследования под катом
Читать дальше →
Total votes 68: ↑55 and ↓13 +42
Views 1.5K
Comments 76

Перевод: Шаблонизаторы в PHP

PHP *
Translation
Первод статьи, автором которой является Fabien Potencier, ведущий разработчик и идеолог Symfony. Статья поднимает обсуждение о шаблонизаторах PHP в целом и представляет Twig — быстрый и функциональный шаблонизатор.
Читать дальше →
Total votes 76: ↑54 and ↓22 +32
Views 47K
Comments 311

Бесплатный инструментарий для редактирования сайта

PHPShop Software corporate blog
Обновилась линейка специализированного ПО для веб-программистов, работающих с PHPShop – визуальный редактор шаблонов Editor и интегрированная среда разработки IDE. Во все приложения добавлена функция автоматической чистки кода с проставлением отступов и возможность создавать закладки в коде для более удобной навигации по файлу. Добавилась новая панель для копирования, поиска, выравнивания кода.
Читать дальше →
Total votes 7: ↑1 and ↓6 -5
Views 4K
Comments 1

Как я перешел со Smarty на Twig

Website development *
Sandbox
Раньше я был ярым поклонником Smarty. У Smarty достаточно много достоинств, он распространен, с ним просто, он привычен и так далее. Но так вышло, что для одного из проектов Smarty оказался слишком уж тяжелым и слегка тормозным. Я не говорю, что Smarty плох или что он негодный, нет. Просто в некоторых условиях его производительность оказалась недостаточной, и надо было искать альтернативу. Альтернатива нашлась и я очень рад, что мне выпала возможность работать с Twig.
Читать дальше →
Total votes 59: ↑49 and ↓10 +39
Views 24K
Comments 137

Write once, render anywhere — используем один шаблонизатор на клиенте и сервере

Website development *
Sandbox

Введение


Все вы наверняка уже слышали или используете в повседневной жизни различные шаблонизаторы, они же template engine-ы. Используем мы их обычно для генерации HTML кода. В этом процессе у нас как правило есть какая-то модель данных и HTML шаблон который мы этими данными наполняем.
Раньше HTML страницы мы генерировали только на серверной стороное, а сегодня все чаще делаем это и на клиенте. Спрос родил предложение, и у нас стало все больше появляться шаблонизаторов которые работают на JavaScript, а есть и шаблонизаторы с реализациями на множестве языков одновременно, в том числе и на серверных, какие возможности нам это дает, я попытаюсь описать в данной статье.
Читать дальше →
Total votes 9: ↑7 and ↓2 +5
Views 4.8K
Comments 12

MODX Revolution и php-шаблоны

CMS *MODX *
Как и у всякой CMS/CMF, у MODX есть как последователи, так и противники. Чисто субъективно, этого вообще не избежать (у каждого свои привычки, взгляды, потребности и т.п.).

Но есть ли объективные причины? Да, безусловно. И на мой взгляд одна из самых серьезных — это собственный парсер MODX.

У MODX есть ряд собственных зарегистрированных тегов, используя которые даже начинающий программист, который знает только HTML и быть может вообще не знает PHP, может собрать довольно вменяемый сайт, так как существует довольно большое количество готовых компонентов, которые устанавливаются просто в два клика. К примеру для того, чтобы получить на своей странице меню, достаточно прописать [[Wayfinder?startId=`0`]]

Сразу небольшая видео-демка с решением для тех, кому лень читать.
Читать дальше →
Total votes 23: ↑10 and ↓13 -3
Views 33K
Comments 41

Почему мотоцикл не смог заменить танк, или перевод сайта REG.RU с Template::Toolkit на Text::Xslate

REG.RU corporate blog Perl *
Recovery mode
За любым крупным интернет-проектом стоит автоматизированная информационная система и сайт, продающий товары или услуги. Чем крупнее проект, тем сложнее логика сайта, и тем большую нагрузку ему приходится нести. Возникают задачи увеличения «мощности» сайта и уменьшения времени отклика страниц. Как и все, кто пишет подобные системы, периодически мы проводим сессии по тюнингу скорости работы нашего сайта. Оптимизируем всё, до чего можем дотянуться. На определённом этапе упёрлись в скорость работы HTML-шаблонизатора, который сходу не совсем понятно как «разогнать». Кое-что удалось выжать с помощью кэширования подшаблонов, но, несмотря на полученные позитивные результаты, время работы шаблонизатора всё равно оставалось краеугольным камнем в скорости генерации страниц. Нужны были более радикальные меры, возможно даже другие шаблонизаторы…

Об истории одной из наших инициатив в нелёгком деле поиска Святого Грааля самого быстрого шаблонизатора читайте ниже в подробном отчете Дмитрия Карасика, который был привлечён к решению этой задачи:

«По-моему, сейчас все используют шаблонизаторы для веб-девелопмента. Все используют и потихоньку ругаются на несовершенство выбранного инструмента. Ведь миграция развесистого проекта на другой шаблонизатор – дело весьма непростое, поэтому гораздо чаще люди предпочитают что-то допиливать в уже существующем пакете, чем переписывать массу кода с неизвестным результатом.
Читать дальше →
Total votes 18: ↑16 and ↓2 +14
Views 5.7K
Comments 8

Шаблоны в шаблонизаторе и как шаблоны Django до PHP дошли (в очередной раз)

Website development *PHP *
За предвкушением 23-го февраля можно даже и не заметить, как вечер четверговых разговоров о шаблонизаторах для PHP может плавно перетечь в вечер пятничных.

В статье будет рассмотрено несколько тем, начиная с темы нужности шаблонизаторов вообще и в PHP в частности, и заканчивая заметками о процессе создания шаблонизатора dja (портировании кода с Python на PHP).

Читать дальше →
Total votes 14: ↑8 and ↓6 +2
Views 7.6K
Comments 14

БЭМ on Rails

JavaScript *Ruby on Rails *HTML *


Здравствуй, <%= habrauser %>!

Я очень люблю фреймворк Ruby On Rails, он правда очень и очень крут. Он позволяет в кратчайшие сроки реализовать твои замыслы. Раньше я много писал на нем, но сегодня я front-end разработчик. Когда я узнал о методологии БЭМ, я был в полном восторге, потому что так или иначе ты сам приходишь к чему-то подобному. Хорошо, когда дзен-процесс сокращается в разы. О том, что такое БЭМ можно прочитать тут и тут. Недавно прошедший BEMup окончательно расставил все на свои места. Мне были просто необходимы инструменты для работы с БЭМ в рамках проектов на Ruby on Rails. Конкретных решений не существовало, а bem-tools не подходит по вполне понятным причинам, описанным ниже. Я решил написать bem-tools на Ruby.
Смотреть, что вышло
Total votes 55: ↑45 and ↓10 +35
Views 14K
Comments 27

Пишем свой JavaScript шаблонизатор

Website development *JavaScript *
Tutorial
На тему шаблонизаторов статей написано великое множество, в том числе и здесь, на хабре.
Раньше мне казалось, что сделать что-нибудь своё — «на коленке» — будет очень сложно.
Но, случилось так, что прислали мне тестовое задание.
Напиши, мол, JavaScript шаблонизатор, вот по такому сценарию, тогда придёшь на собеседование.
Требование, конечно, было чрезмерным, и поначалу я решил просто игнорить.
Но из спортивного интереса решил попробовать.
Оказалось, что не всё так сложно.

Собственно, если интересно, то под катом некоторые заметки и выводы по процессу создания.

Для тех, кому только глянуть: the result, the cat.

Читать дальше →
Total votes 39: ↑28 and ↓11 +17
Views 22K
Comments 18

cnCt — клиентский js шаблонизатор

JavaScript *
Recovery mode
Рано или поздно шаблонизация перемещается на клиент. На данный момент существует несколько общепринятых клиентских шаблонизаторов ими являются mustache и underscore.template или что-нибудь подобноедоклад(ах) Сергея Бережного можно найти ещё). Несмотря на огромное количество клиентских шабнизаторов большинство, за редким исключением, являются строчными.
По многим причинам работать с ними тяжело
Total votes 15: ↑10 and ↓5 +5
Views 5.6K
Comments 21

15 шаблонизаторов для фронтенд-разработки

Website development *JavaScript *HTML *
Translation

Число JS-библиотек ни в коей мере не уменьшается; наоборот, оно растёт с каждым днём. Когда мы доходим до приложений JS, лучшим выбором оказываются шаблоны, чем полноценные библиотеки, потому что это приводит к более чистому базовому коду и лучшему процессу работы с ними.

Не так давно я писал, что вы могли бы попробовать написать свою библиотеку, когда придёт время. Шаблонизаторы же требуют несколько больших навыков и понимания языка, с которым вы работаете, поэтому лучше полагаться на любой шаблонизатор из имеющихся в списке ниже.
ICanHaz,Hogan,Handlebars,Mustache,Transp-cy,doT,Walrus,Chibi,templayed,ECT,Pithy,T,Nunjuck,Jade,Dust
Total votes 58: ↑42 and ↓16 +26
Views 175K
Comments 52

One-liner для компиляции шаблонов на Lua

Website development *Programming *Lua *
Синтаксис Lua позволяет реализовать шаблоны в стиле PHP буквально несколькими регулярными выражениями.
Для начала посмотрим, что из этого выйдет.

Подстановка переменных


<a href="<%url%>"><%label%></a>

Логические конструкции


Будет
<? if 1 > 2 then ?>
лучше
<? else ?>
хуже
<? end ?>

Циклы


<ul>
<? for i = 1, 9999 do ?>
  <li>ФЗ №<%i%></li>
<? end ?> 
</ul>

Читать дальше →
Total votes 29: ↑22 and ↓7 +15
Views 7.3K
Comments 20

Handlebars. Руководство к действию

Website development *JavaScript *
Sandbox
Данная статья содержит в себе описание основных возможностей шаблонизатора Handlebars и является свободным переводом его официальной документации. Итак, поехали…


Читать дальше →
Total votes 21: ↑19 and ↓2 +17
Views 96K
Comments 28

Доработки шаблонизатора DoT.js

JavaScript *HTML *Node.JS *
Время зоопарка шаблонизаторов миновало, теперь вокруг бегают динозаврики MVC, а в них используются встроенные шаблонизаторы и билдеры компонентов. Но для замены старых менее удобных шаблонизаторов в Knockout и Backbone иногда нужны они, в основном, остановившиеся в развитии на уровне около 2014 года.

Так случилось и с DoT.js. Поначалу заброшенный авторами примерно на год в 2013-м, он получил их внимание ненадолго, поднявшись с версии 1.0.1 до 1.1.1, и снова был заброшен (или стабилизирован, смотря как рассуждать). В связи с этим ещё в 2013 году понадобилось (делать клон DoT.js), а теперь — и апгрейдить его.

Он — такой же быстрый, как и встроенный _.template() в Underscore/Lodash, но с улучшенным синтаксисом, при котором необходимость писать JS в шаблонах встречается нечасто, а в Underscor-овском — нужна всегда. Этим скобкам со скриптами даже придумали специальный термин: javascript encapulated sections (JES), и от них, в основном, избавились.

Что получаем дополнительно?


1. Структура шаблонизатора была переработана (в 2013-м, ссылка оттуда), чтобы лучше читалась и уменьшилось число декодирований функций;
2. Тесты показали, что быстродействие в среднем не изменилось (колебания -3% — +10% в зависимости от параметров);
3. Добавлена команда работы по структуре, аналогично работе по массиву;
Читать дальше →
Total votes 8: ↑5 and ↓3 +2
Views 4.6K
Comments 25