<rmcreative>

RSS

Все заметки с тегом «Шаблонизаторы»

Можно уточнить:

    (1)
  1. Супрепростые шаблоны без дополнительных библиотек

    3 ноября 2016

    Вдогонку к варианту с jQuery тот же простой шаблонизатор, но без библиотек.

    Для начала задаём сам шаблон прямо в HTML страницы:

    <script type="html/tpl" id="my-template">
    <div class="item">
        <h1>{title}</h1>
        <p class="description">{description}</p>
    </div>
    </script>

    Далее реализовываем сам метод получения строки с заменёнными плейсхолдерами:

    function renderTemplate(name, data) {
        var template = document.getElementById(name).innerHTML;
     
        for (var property in data) {
            if (data.hasOwnProperty(property)) {
                var search = new RegExp('{' + property + '}', 'g');
                template = template.replace(search, data[property]);
            }
        }
        return template;
    }

    Использовать можно так:

    var html = renderTemplate('my-template', {
        title: "My cool thing",
        description: "It is really cool, isn't it?"
    });

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

    2 комментария
  2. Супрепростые шаблоны на jQuery без дополнительных библиотек

    2 ноября 2016

    Шаблоны — это удобно. Особенно когда альтернатива — формировать HTML конкатенацией. Если в проекте есть jQuery, а отдельный шаблонизатор использовать не хочется, реализовать простые шаблоны очень просто.

    Для начала задаём сам шаблон прямо в HTML страницы:

    <script type="html/tpl" id="my-template">
    <div class="item">
        <h1>{title}</h1>
        <p class="description">{description}</p>
    </div>
    </script>

    Далее реализовываем сам метод получения строки с заменёнными плейсхолдерами:

    function renderTemplate(name, data) {
        var template = document.getElementById(name).innerHTML;
     
        for (var property in data) {
            if (data.hasOwnProperty(property)) {
                var search = new RegExp('{' + property + '}', 'g');
                template = template.replace(search, data[property]);
            }
        }
        return template;
    }

    Использовать можно так:

    var html = renderTemplate('my-template', {
        title: "My cool thing",
        description: "It is really cool, isn't it?"
    });

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

    8 комментариев
  3. Fenom — yet another PHP template engine

    4 июля 2013

    На хабре выложили анонс шаблонизатора Fenom. К необходимости использования PHP-шаблонизаторов я отношусь довольно скептически. То ли мне не попадаются проекты, где конечному пользователю нужно дать доступ к шаблонам, то ли расстраивают накладные расходы... в общем, не сложилось у меня с ними.

    Однако, Fenom порадовал. Выделяется он, как минимум, двумя вещами: производительностью и подходом. Автор плотно поработал над архитектурой и получил меньшее, чем у Smarty и Twig, количество классов и кода, меньшее потребление памяти и лучшую производительность.

    UPD: на всякий случай ссылка на github.

    13 комментариев
  4. PHP, шаблоны и короткий синтаксис

    11 августа 2010

    Одним из самых частых аргументов, приводимых в пользу шаблонизаторов по сравнению с голым PHP, является более красивый синтаксис:

    {$code}

    вместо

    <?php echo $code?>

    На самом деле этот аргумент, хотя и самый часто используемый, является полностью необоснованным.

    Если включить в php.ini short_open_tag, можно вместо действительно громоздкого кода, приведённого выше, писать:

    <?=$code?>

    При использовании альтернативного синтаксиса управляющих конструкций, код будет гораздо понятней, чем шаблон того же Smarty:

    <ol>
    <?foreach($users as $user):?>
      <li>
        <h2><?=$user->username?></h2>
        <p><?=$user->notes?></p>
      </li>
    <?endforeach?>
    </ol>
    34 комментария
  5. Простое шаблонирование в JavaScript

    22 января 2010

    Замечательный способ несколько разгрузить JavaScript код, используя для этого всего одно небольшое дополнение к стандартному объекту String.

    Читаем

    Комментировать
  6. Шаблонизаторы. Новая волна

    24 ноября 2008

    Хабр в очередной раз радует интересным набором статей.

    Нативный шаблонизатор

    Один из вариантов нативного шаблонизатора. Не идеальный, но комментарии помогут довести его до ума.

    MACRO — гибкий PHP шаблонизатор, с человеческим «лицом»

    Шаблонизатор фреймворка Limb3. Достаточно гибок. Чем-то напоминает Smarty. Очень приятно, что в статье показаны не только плюсы.

    Обзор шаблонизатора Quicky: Производительность и Гибкость

    Синтаксисом похож на Smarty. Этот же самый синтаксис более оптимален. Ну и, конечно же, скорость. Компилируется оптимальнее. Работает быстрее.

    Комментировать
  7. Прощай, Smarty?!

    12 октября 2007

    Анатолий Ларин написал прощальную заметку. Заметка оказалась весьма спорной, что породило ряд довольно интересных комментариев.

    Читаем и участвуем в обсуждении

    2 комментария
  8. Введение в шаблоны - Разделение данных и их представления

    26 июня 2006

    Типичная команда веб-разработчиков обычно состоит из программистов, дизайнеров и верстальщиков. Как им ужиться вместе? Ведь программист ничего не понимает в дизайне, а дизайнер (да и верстальщик чаще всего тоже) не очень хорошо представляет себе, что такое программирование.

    Очевидно, необходимо распределить роли в проекте: дизайнеру - дизайн, верстальщику - вёрстка, программисту - код. Но не всё так просто. Ведь надо ещё и собрать все в единый рабочий продукт...

    Чтобы упростить жизнь всем участникам проекта были придуманы системы шаблонов. С их помощью можно добиться полного (ну или почти полного) разделения труда.

    При этом программист будет только каким-либо образом получать данные, а верстальщик уже засовывать их в нужное место придуманного дизайнером макета.

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

    Если не вдаваться в подробности, то простейшая шаблонная система работает примерно так:

    1. Программист получил данные, отдал их шаблонной системе.

    2. Шаблонная система нашла и загрузила соответствующий данным шаблон.

    3. Шаблонная система подставила данные в шаблон и отдала полученный документ пользователю.

    Теперь если понадобится изменить дизайн документа проекта, например, вывести данные в виде диаграммы, а не текстом, то программист уже не будет принимать в этом участия. Представлением данных руководит верстальщик!

    Если же было решено сменить ассортимент товара или, например, перенести базу данных на другой сервер - всем займётся программист. И при этом он ни разу не заглянет в код шаблонов. Они останутся прежними.

    Итак, главное назначение шаблонов - отделить данные от их визуального представления.

    Шаблоны приятно использовать даже в маленьких проектах, но истинную их пользу можно почувствовать лишь в средних и крупных проектах.

    Среди огромного количества шаблонных систем можно выделить две группы:

    1. Системы, призванные полностью отделить оформление от программирования.

    2. Системы, призванные отделить бизнес логику (работу с данными) от логики визуального представления.

    В первом случае программист занимается подготовкой всех данных в конечном виде, т.е. отдаёт их шаблону простыми переменными. Верстальщик же только подставляет их в нужное место макета, задавая в соответствии с пожеланиями дизайнера какими цветами, шрифтами они будут отображены. При этом верстальщик не использует никакого кода и вообще может не иметь ни малейшего представления о программировании.

    Во втором случае верстальщику даётся больше свободы. Теперь он самостоятельно может, например, обрезать строку текста до заданной величины, чтобы она не растягивала дизайн, представить переданный программистом массив данных в виде таблицы, текста, диаграммы. В этом случае верстальщику приходится изучить синтаксис шаблонов. Это конечно минус, но небольшой: обычно язык шаблонов не такой уж и сложный и состоит из 10-20 конструкций и правил.

    Какого же направления придерживаться? Вопрос кажется не таким уж простым, но ответ не так уж и сложен:

    В зависимости от ситуации.

    Если верстальщик одновременно является дизайнером и ровным счётом ничего не понимает в программировании (а главное - не желает понимать), ему невозможно объяснить что такое массив, цикл и т.д. - используем первый вариант. Не показываем верстальщику код, объясняем, что если написать "такой специальный тэг", то вместо него будут наши данные. Верстальщик останется доволен. А вот программисту придётся попотеть - передать всё в удобном для верстальщика виде.

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

    Если же ваш верстальщик не лентяй и может учиться - ваш выбор - второй вариант. Дадим верстальщику полное описание "как оформлять шаблон" и через два дня он будет знать всё, что необходимо. Теперь хорошо будет всем. Верстальщику не надо будет бегать к программисту, и просить: "а нельзя переименовать вот этот специальный тэг?". Программист не будет расходовать своё время на удобное для верстальщика представление данных: гораздо проще передать в шаблон объект и рассказать верстальщику, как получить то или иное поле.

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

    Выводы:

    Шаблоны использовать определённо стоит. Они являются гибким и элегантным решением для разделения данных и их визуального представления.

    Даже если сейчас вы со мной не согласны, вы всё равно рано или поздно начнёте их использовать с ростом масштабности ваших проектов. Стоит всегда выбирать шаблонную систему в соответствии с текущей задачей и ситуацией.

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

    KTemplate призван полностью отделить оформление от программирования.

    Smarty призван отделить бизнес логику от логики визуального представления.

    1 комментарий