Pull to refresh

приемы работы с шаблонизатором

PHP *

Вложенный шаблон должен задать title


чаще всего встречал такую проблему: в середине страницы выводится блок, этот блок задает Title, но реально Title уже выведен в head как быть?
Читать дальше →
Total votes 31: ↑18 and ↓13 +5
Views 1.2K
Comments 68

Smarty обновился до версии 2.6.22

PHP *
В связи с некоей ошибкой в библиотеке PCRE из PHP 5.2, скоропостижно (спустя всего 15 дней после выхода 2.6.21, в котором, наконец, сподобились ввести method chaining) зарелизилась версия 2.6.22 шаблонизатора Smarty. Проблемы, возникающие при «some versions of PCRE» (ц), решились гениально и просто — выкидыванием нафиг самого вкусного изменения прошлого релиза :)

Официальный CHANGELOG на офсайте.
Total votes 10: ↑6 and ↓4 +2
Views 572
Comments 13

PHP Шаблонизатор Quicky версия 0.5.x

PHP *
Основные изменения по сравнению с 0.4.x: (http://code.google.com/p/quicky/)
[~] {math} теперь компилируется в нативный PHP-код.
[~] Отображаются номера строк при ошибках компиляции, ошибки компиляции выдаются сразу все, а не по одной, показывается тег, в котором ошибка.
[+] Добавлена функция {debug} отображающая debug-консоль (о том почему у Quicky наиболее совершенный дебагер читайте под катом).
Читать дальше →
Total votes 3: ↑3 and ↓0 +3
Views 1.8K
Comments 5

Ещё один php шаблонизатор

PHP *

Доброго времени суток,

Хочу рассказать о своём шаблонизаторе для проектов на PHP.
Понимаю, что рискую быть обвинённым в изобретении велосипеда, поэтому объясню свои мотивы: Большинство шаблонизаторов меня не устраивают изначально, среди них Smarty, Quicky и все им подобные, причина — мне кажется, что шаблонизатор должен избавлять от использования логики в шаблонах, а не навязывать свой синтаксис для той же логики.
Иначе говоря, такой:
  1. {?$x = 2+2}
, или такой
  1. {foreach name=my from=array('One','Two','Three') key="i" item="text"}
подходы для меня абсолютно неприемлимы!
Пожалуй, из всех шаблонизаторов больше всех удовлетворяет моим требованиям xtemplate, но у него есть целый ряд недостатков которые меня раздражают, например то, что все страницы нужно обрамлять в блоки, или то, что он интерпретирует шаблоны, а не компилирует, благодаря чему скоростью похвастаться не может. Ну и последнее — я решил написать шаблонизатор так, чтобы не было никаких проблем с добавлением функционала, а также, чтобы он был совместим с нативным шаблонизатором, который я использовал до этого, и к которому привык. Дело в том что конструкция 
  1. $tpl->assigned_var='abc';
которую часто используют нативные шаблонизаторы, мне нравится гораздо больше чем что-нибудь вроде:
  1. $thl->assign('assigned_var','abc');
Читать дальше
Total votes 13: ↑8 and ↓5 +3
Views 12K
Comments 44

Если поумнеет

Django *
Translation
Ох этот скромный {% if %}. Краеугольный камень шаблоной логики Django.

Каждый, кто начинал работать с Django 1.1 (или ранее), почти наверняка спотыкался об этот камень — шаблонный тег {% if %} поддерживает булеву логику только на базовом уровне.
Читать дальше →
Total votes 64: ↑50 and ↓14 +36
Views 2.9K
Comments 38

Шаблонизатор на основе объектной модели html

JavaScript *
Прочитав предыдущий топик (http://habrahabr.ru/blogs/javascript/96588/) в сознании всплыла старая идеи. Подход известный, но то ли у него есть минусы которые я не вижу, то ли мы с гуглом друг друга не поняли. В общем, готового решения я найти не смог, поэтому за пару часов набросал свое. Но так как наши пути с джава скриптом на данный момент разошлись, опробовать его в реальном проекте не получилось.
Интересны два вопроса, какие вам видятся минусы и встречали ли вы похожие решения для javascript?
Читать дальше →
Total votes 9: ↑4 and ↓5 -1
Views 1.3K
Comments 14

Javascript fluent html builder

JavaScript *
Идея генерации html с помощью javascript меня не отпустила. Напомню eе суть с помощью jQuery
$("<div>", {"class":"something",id:10})

но так как читаемость оставляет желать лучшего, была реализована небольшая библиотека.
Читать дальше →
Total votes 40: ↑22 and ↓18 +4
Views 3.4K
Comments 12

Универсальный шаблонный движок за 1 минуту из подручных материалов

Perl *
Шаблон

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

Не стоит забывать, что применение шаблонов далеко не ограничено WEB-ом.
Это генерация различного вида отчётов, генерация кода программ на различных языках, генерация исходных данных для обработки и многое другое.
Вообще, шаблоны хочется применить везде, где много текста и мало логики.

В раздумьях, как бы это сделать побыстрее и подешевле, не следует обманывать себя (в основном, на раннем этапе) мыслями типа «да у меня статический текст, только надо приклеить шапку», «тут нужен только счётчик», «мне надо только вывести дату» и т.д.
Сначала — шапка и счётчик, дальше будет условная вставка блоков (if), потом понадобится генерация таблиц (тут уже нужны циклы и массивы), далее потянутся строковые операции и все остальные конструкции нормального языка программирования.
Читать дальше →
Total votes 12: ↑7 and ↓5 +2
Views 1.5K
Comments 13

Plim — наиболее полный порт шаблонизатора Slim на Python

Python *
Определённо, первые реализации Haml и Slim должны были появиться на Python. Или, по крайней мере, так было бы справедливее.
Cложно представить себе более «питоничный» подход к написанию HTML-разметки, чем тот, который в своё время был предложен этими языками. Синтаксис, основанный на отступах, отсутствие закрывающих символов, общая лаконичность — не эти ли слова можно услышать из уст среднестатистического программиста, рассказывающего кому-то в первый раз о Python?
Читать дальше →
Total votes 24: ↑22 and ↓2 +20
Views 4K
Comments 10

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

«Histone» — новый кроссплатформенный шаблонизатор с открытым исходным кодом

МегаФон corporate blog Website development *Programming *
Введение

МегаФон — динамичная технологическая компания, работа которой не ограничивается исключительно предоставлением услуг связи. Например, среди наших активов есть большое количество интернет-сайтов, на которых клиенты получают различную информацию и услуги. В рамках проекта по совершенствованию и развитию наших веб-проектов мы, в том числе, создаём продукты, которые могут быть полезны и другим разработчикам. Сегодня мы хотели бы представить первый из них — шаблонизатор Histone, который является opensource-проектом, распространяемым по лицензии Apache Software License 2.0. Но обо всём по порядку.

Что такое Histone?

Многие из вас при создании веб-приложений используют различные шаблонные движки. Ситуация, когда из данных, представленных в определенном формате, вам необходимо сгенерировать некий HTML-код при помощи шаблона, задающего правила преобразования, встречается повсеместно. Несколько лет назад шаблонизаторы активно использовались для генерации HTML-кода на сервере (Smarty, FreeMarker, Velocity), сегодня все чаще и чаще возникает необходимость производить генерацию HTML-кода непосредственно в браузере. В качестве примера таких шаблонизаторов можно привести: TrimPath templates, Mustache, Google Closure Templates и т. д.
Читать дальше →
Total votes 33: ↑24 and ↓9 +15
Views 12K
Comments 61

Yate: Яндекс.Почта перешла на новый шаблонизатор

Яндекс corporate blog Website development *
imageНекоторое время назад мы писали, что в Яндекс.Почте появился новый интерфейс, в котором используется шаблонизация данных в браузере. Немногие крупные сервисы отваживались на это, но мы и сейчас считаем такое решение наиболее удачным. Оно не только ускорило работу интерфейса, но и позволяет экономить трафик пользователя и эффективнее расходовать процессорное время серверов.

Тогда в качестве шаблонизатора мы использовали XSL, а данные передавали в формате XML. Переведя проект на новый интерфейс, мы начали искать другие способы ускорения работы интерфейса Яндекс.Почты.

Недавно мы перевели всю Почту на JS-шаблонизатор и JSON-данные.
И вот как это проходило
Total votes 173: ↑159 and ↓14 +145
Views 63K
Comments 185

Вышло обновление JavaScript шаблонизатора ECT

JavaScript *Node.JS *
Ровно три месяца назад я представил хабрасообществу JavaScript шаблонизатор ECT. Вчера для него вышло обновление, о котором я хочу рассказать в этой статье.

Вы знакомы с ECT?


ECT это JavaScript шаблонизатор со встроенным CoffeeScript синтаксисом (отсюда и название: Embedded CoffeeScript Templates). ECT изначально разрабатывался с упором на максимальную производительность и при этом он предоставляет разработчику богатый набор функций.

Что нового?

Читать дальше →
Total votes 14: ↑10 and ↓4 +6
Views 5.7K
Comments 7

Swig — JavaScript шаблонизатор с Django Template синтаксисом

JavaScript *Django *
Recovery mode
Заметил, что на Хабре никто не писал про отличный JavaScript шаблонизатор Swig.

JavaScript в поледнее время становится все более популярным и находит новые неожиданные сферы применения. Вот и меня не обошел этот тренд, так что при just-for-fun разработке одного проекта я не удержался и решил попробовать использовать JS одновременно на сервере (Node.JS), веб-клиенте (Backbone.js — все серьезно :) ) и в мобильном приложении (PhoneGap). Следующим шагом для меня стал выбор шаблонизатора, причем поддержка как node, так и браузера была обязательным критерием. До этого я имел дело в основном в Django Template Language, так что выбор пал на Swig.

Особенности Swig:
  • Django Template подобный синтаксис
  • Крайне высокая скорость работы (бенчмарки)
  • Поддержка node.js и основных браузеров
  • Совместимость с Express
  • Открытый исходный код
Читать дальше →
Total votes 38: ↑31 and ↓7 +24
Views 18K
Comments 11

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

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

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

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

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

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 172K
Comments 52

Язык описания шаблонов Snakeskin

Website development *JavaScript *HTML *Node.JS *
Snakeskin

This is Frank, a snake-cowboy who loves templates.




Привет! Хочу рассказать о своей разработке — языке программирования текстовых шаблонов «Snakeskin». Проекту больше трех лет, всеми детскими болезнями, я полагаю, он благополучно переболел (и излечился), поэтому хочу поделиться результатом.


Демка


Основной репозиторий


Документация


Плагины для Gulp, Grunt, Webpack и прочее


Gitter — здесь можно задать любой интересующий вопрос

Читать дальше →
Total votes 19: ↑16 and ↓3 +13
Views 8.9K
Comments 27
1