войти зарегистрироваться

Ruby on RailsШаблонизатор Slim — альтернатива Haml'y

Давно хотел попробовать Haml, но всё не было времени. Но вот недавно обнаружил новый шаблонизатор, который мне сразу понравился. По словам создателей, он взял лучшее от Jade и Haml. Основная задача — сократить объем кода, при этом не делая его страшным и непонятным.

Вот так выглядит пример шаблона с использованием Slim:
doctype html
html
  head
    title Slim Examples
    meta name="keywords" content="template language"

  body
    h1 Markup examples
    #content.example1
      p Nest by indentation

    = yield

    - unless items.empty?
      table
        - for item in items do
          tr
            td = item.name
            td = item.price
    - else
      p No items found

    #footer
      | Copyright © 2010 Andrew Stone

    = render 'tracking_code'

    script
      | $(content).do_something();

Веб-разработкаЭти бесчисленные парадигмы, концепции, инструменты и фреймворки из песочницы

Мое мировоззрение, как программиста, сформировалось еще во времена консольных приложений и текстовых пользовательских интерфейсов, на смену им пришли графические оконные GUI, а сейчас я наблюдаю уже третий виток технологий, связанный с глобальной сетью. Каждый раз, конечно же, приходилось менять не только любимый язык программирования, но и весь технологический стек, с наработками, заготовками и достаточно обширными библиотеками, кои сейчас гордо зовутся фреймворками. Резать приходилось по живому, нещадно и решительно.

Веб-разработкаШаблонизатор. Обрамление конструкций

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

Но сегодня мы всё же поговорим про эти самые скобочки. Не забудем и про сигилы для переменных.

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

Веб-разработкаСтандарты синтаксиса шаблонизаторов. Первые шаги

Для затравки и предметного обсуждения нужна точка отсчета. В шаблонизаторе нас интересуют поддерживаемые типы конструкций, способ их обрамления, какие-то возможности (препросмотр без компиляции).
Основные типы конструкций для управления выводом в шаблоне:
  1. Переменные.
  2. Условные операторы.
  3. Операторы циклов.
  4. Инклуды, блоки.
  5. Наследование.

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

Веб-разработкаСтандарты синтаксиса шаблонизаторов

Перестали ли вы слышать от новичков вопрос: «какой выбрать шаблонизатор?». Не думаю.
Единственное что можно с уверенностью сказать, что периодически некоторые решения становятся популярны в определенных кругах, но они по большей части органичение их области применения, это язык программирования. Перечислять плюсы существования каких-либо стандартов не нужно. Все понимают, «от этого хорошо будет всем». Придумать, закрепить, применить их – вот эта задача, далеко не тривиальная, но ведь решаемая.

Давайте начнем двигаться к этому.

Веб-разработкаJavascript шаблонизатор с серверной частью на perl

Мы начали с ( javascript шаблонизатора), что использовать один и тот же шаблон на стороне клиента и на стороне сервера, это удобно. Готовых рализаций такого подхода кот наплакал. Кровь приливает к голове, мы решаемся написать своё решение.

Обрисуем исходные данные и задачу



Пусть у нас есть шаблоны, от нашего шаблонизатора. На сервере они обрабатываются perl'ом. В конечном итоге мы хотим некоторые из имеющихся шаблонов, или их частей, не вынесенных в отедельный файл, использовать на стороне клиента. Необходимо с минимальными затратами(в потерере функциональности) воспроизвести процедуры генерации html. В результате обработки шаблонов, мы хотим получить наборы предварительно указанных шаблонов и блоков, оформленных в виде библиотеки javascript. Сказано – сделано.

JavaScriptВелосипедим, или Django-like Javascript Templates

Одним из компонентов нашего проекта Shopium.ua является административный интерфейс, который строится как полностью выполняющийся на клиенте rich internet application.

Для отрисовки данных приходящих с сервера в HTML нам часто нужен Javascript-шаблонизатор.

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

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

И сформировали к нему такие требования:

XSLTДругая книга про XSLT

Вашему вниманию предлагается небольшая по объему книга (можно называть это брошюрой), посвященная XSLT и его использованию в качестве языка шаблонизатора при создании сайтов на UMI.CMS.

Это не реклама «еще одной cms», и «еще одного шаблонизатора», а лишь предложение познакомиться с одним из подходов к использованию технологии XSLT при создании сайтов, где в качестве системы управлением контента взята UMI.CMS.

Веб-разработкаУниверсальный нумератор как шаблонная функция Mako

Думаю все сталкивались с необходимостью создания «номеров страниц» для сайта. В Pylons где то был нумератор (в webhelpers) но функциональность его мне не понравилась. Если делать нумератор достаточно быстрым и гибким (не просто все номера) то код получается не маленьким и его клонирование усложняет шаблоны. И тут к нам приходят на помощь шаблонные функции Mako.

Персональные блоги Шаблонизатор: Subversion + DOM-parser в деле

“Долбанный будильник!” – выругнулся в подушку Хэкер и, не поднимая головы, потянулся рукой к находившемуся рядом столу. Стоявшие на нем пустые пивные бутылки с грохотом покатились на пол, пока рука Хэкера щупала пространство на столе, пытаясь достать этот ужасный девайс, но тщетно.

Поднявшись и расправившись с будильником, сидя на краю кровати, Хэкер посмотрел в зеркало, висевшее напротив. ”Паршиво выглядишь”, – подумал он.

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

Хэкер поднялся с кровати. Умывшись холодной водой и походив взад-вперед по комнате, он задумчиво посмотрел в окно. В доме, что напротив, рабочие под присмотром дамочки с собачкой меняли окна фасада.

“Окна, окна… – думал Хэкер. – Окна – это Windows; Windows, Windows....Windows – это тормоза, тормоза — это черепаха; черепаха, черепаха… черепаха — это Subversion клиент...Subversion??? “

“Эврика! ” – воскликнул Хэкер. Решение пришло само собой. Теперь он знал, что он будет предлагать на совете.