eRuby - eRuby

редактировать
eRuby (Embedded Ruby)
Стабильный выпуск 1.0.5 / 14 декабря 2004 г. (2004-12-14)
Тип Шаблонизатор
Лицензия GPL и LGPL

eRuby (Embedded Ruby ) - это система шаблонов, в которую встроено Ruby в текстовый документ. Он часто используется для встраивания кода Ruby в документ HTML, аналогично ASP, JSP и PHP и другим сценариям на стороне сервера. языков. Система шаблонов eRuby объединяет код ruby ​​и простой текст для обеспечения управления потоком и подстановки переменных, что упрощает обслуживание.

Модуль View из rails отвечает за отображение ответа или вывода в браузере. В простейшей форме представление может быть частью кода HTML, который имеет некоторое статическое содержимое. Для большинства приложений просто статического содержимого может быть недостаточно. Многие приложения Rails потребуют, чтобы динамический контент, созданный контроллером (метод действия), отображался в их представлении. Это стало возможным благодаря использованию Embedded Ruby для создания шаблонов, которые могут содержать динамический контент. Встроенный Ruby позволяет встраивать рубиновый код в документ представления. Этот код заменяется надлежащим значением, полученным в результате выполнения кода во время выполнения. Но, имея возможность встраивать код в документ представления, мы рискуем преодолеть четкое разделение, присутствующее в кадре MVC. Таким образом, разработчик несет ответственность за четкое разделение ответственности между модулями модели, представления и контроллера его / ее приложения.

Содержание
  • 1 Использование
    • 1.1 Теги выражений
    • 1.2 Теги выполнения
    • 1.3 Теги комментариев
    • 1.4 Другие теги
  • 2 Реализации
    • 2.1 erb
      • 2.1.1 метод new () ERB
      • 2.1.2 Запуск ERB из командной строки
    • 2.2 erubis
    • 2.3 ember
  • 3 Сравнение тегов различных реализаций
  • 4 См. Также
  • 5 Ссылки
  • 6 Внешние ссылки
Использование

eRuby позволяет встраивать код Ruby в пару разделителей <%и %>. Эти встроенные блоки кода затем оцениваются на месте (они заменяются результатом их оценки). Помимо создания веб-страниц, eRuby также можно использовать для создания XML-документов, RSS каналов и других форм структурированных текстовых файлов. eRuby динамически генерирует статические файлы на основе шаблонов. Эти функции eRuby можно найти в библиотеке ERB.

В шаблонах ERB используются следующие типы маркеров тегов:

  1. Теги выражений
  2. Теги выполнения
  3. Теги комментариев

Теги выражений

<%= %>: это означает, что тег включает выражение. Такой тег начинается с открывающего тега тега разделителя, за которым следует символ равенства, и заканчивается закрывающим тегом разделителем. Во время рендеринга шаблона этот фрагмент кода заменяется результатом кода. Если результат оценки не является строкой, он преобразуется в строку перед визуализацией. Например:

require 'erb' x = 500 template = ERB.new («Значение x: <%= x %>») помещает template.result (binding)

Результирующий текст выглядит следующим образом: Значение of x равно: 500

Теги выполнения

<% %>: код, заключенный в такие теги, называется скриптлетом. Код в таком теге выполняется, и его результат заменяется на место скриптлета. Такие теги должны иметь соответствующий тег <% end %>для обозначения конца функционального блока. Например:

    <% 4.times do %>
  • элемент списка
  • <% end %>

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

  • элемент списка
  • элемент списка
  • элемент списка
  • элемент списка

Теги комментариев

<%# %>: содержимое тегов комментариев не t будут отображаться на выходе. Такие теги начинаются с открытого разделителя тегов, за которым следует символ решетки, и заканчиваются ограничителем конечного тега. Пример тега комментария показан ниже:

<%# ruby code %>

Это то же самое, что комментарий в Ruby. Весь код Ruby после символа # игнорируется и ничего не генерирует.

Другие теги

Другие вещи, распространенные в eRuby, просто распространены в Ruby, например, подстановка строк с помощью # {string_name}, которая аналогична таким языкам, как Perl или PHP.

Новые строки в eRuby можно подавить, добавив дефис в начале ограничителя конечного тега. Например:

<%2.times do -%><%= @name %><% end -%>

В выводе приведенного выше кода значение name печатается дважды в одной строке.

Реализации

Существует несколько реализаций eRuby, а именно:

  1. ERB
  2. erubis
  3. ember

erb

erb - это реализация eRuby, написанная исключительно на языке программирования Ruby и включенная в Ruby стандартная библиотека.

Шаблон можно создать, запустив фрагмент кода, написанный с использованием объекта ERB. Ниже приведен простой пример:

require 'erb' x = 400 simple_template = "Значение x: равно <%= x %>." renderer = ERB.new (simple_template) помещает output = renderer.result (binding)

Результат выглядит следующим образом: Значение x: 400

То же самое может быть достигнуто с помощью приведенного ниже кода, который не использовать объект ERB:

x = 400 string = "Значение x: # {x}" помещает строку

Оба приведенных выше фрагмента кода генерируют одинаковый вывод. Но что происходит, когда мы меняем местами строки 2 на строку 3 в первом фрагменте кода и строку 1 на строку 2 во втором фрагменте кода? Первый фрагмент изменяет код, показанный ниже:

require 'erb' simple_template = "Значение x: is <%= x %>." x = 400 renderer = ERB.new (simple_template) помещает output = renderer.result (binding)

Это по-прежнему генерирует тот же вывод. т.е. значение x: 400.

Второй фрагмент кода изменяется на следующий код:

string = "Значение x: # {x}" x = 400 помещает строку

Приведенный выше код не будет выполнен. Это связано с тем, что первая строка не знает значение x при выполнении. Таким образом, основной причиной использования объекта ERB является предварительная запись шаблонов путем связывания переменных и методов, которые могут не существовать в данный момент. Шаблон обрабатывается только тогда, когда результат вызывается в объекте ERB. Чтобы получить доступ к методам экземпляра и переменной экземпляра объекта, ERB использует объект привязки. Доступ к переменным и методам объекта предоставляется частным объектом привязки, который существует в каждом классе ruby. Легко получить доступ к методам и переменным в методе класса. Но для доступа к переменным другого класса этот класс должен будет предоставить свой объект привязки через общедоступный метод. Пример показан ниже:

class ERBExample attr_accessor: variable1 # использование bind для доступа к переменным класса def render () renderer.result (привязка) end def initialize (variable1) @ variable1 = variable1 end # Открыть метод private binding (). def get_binding binding () end end example = ERBExample.new (variable1) renderer = ERB.new (template) put output = renderer.result (example.get_binding)

Как мы видим в приведенном выше примере, мы раскрываем объект привязки класса ERBExample. Кроме того, мы использовали объект привязки для доступа к переменным и методам класса в одном из его методов.

метод new () ERB

Новый метод объекта ERB принимает еще два параметра . Второй параметр указывает уровень безопасности. Указав номер во втором параметре (максимальное значение = 4), можно заставить шаблон работать в другом потоке . Значение числа определяет уровень безопасности. На максимальном уровне изоляции, если объект привязки не помечен как доверенный, ERB не может его использовать. Третий параметр указывает необязательные модификаторы. Их можно использовать для управления добавлением новых строк в вывод. Например, чтобы убедиться, что ERB не выводит символы новой строки после окончания тега, мы можем создать объект ERB, как показано ниже

renderer = ERB.new (template, 3, '>')

Чтобы предоставить только третий параметр и игнорируйте второй параметр, используйте 0 как вход для второго параметра.

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

Запуск ERB из командной строки

Как уже было объяснено в предыдущих разделах, ERB используется для создания шаблонов. Это часто используется для создания веб-страниц или других текстовых файлов. Обычно требуется erb для перемещения вывода в желаемый файл. Для этого мы можем использовать возможность перенаправления, предоставляемую в командной строке , и перенаправлять вывод в файл, а не выводить его на стандартный вывод.

erb sample1.erb.txt>my_view.html.erb

В приведенном выше примере вывод перенаправляется в файл my_view.html.erb.

Связывание сторонних библиотек возможно с помощью параметра -r и указания имени библиотеки. Чтобы запомнить эту функциональность, можно вспомнить ключевое слово Ruby require, которое выполняет те же функции, что и опция -r. В приведенном ниже примере используется библиотека IPAddr.

erb -r IPAddr sample1.txt.erb>my_view.html.erb

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

erb -S 4 sample1.erb.txt>my_view.html.erb

erubis

erubis - это реализация eRuby, реализованная в Ruby, а также в Java. Согласно его домашней странице, он работает быстрее, чем eRuby и ERb, и имеет несколько полезных опций, включая альтернативные теги, позволяющие использовать допустимый XML.

ember

ember - чистая реализация eRuby на Ruby. для Linux. Он позволяет отлаживать шаблоны eRuby, улучшает их компонуемость и предоставляет мощные сокращенные директивы eRuby.

Сравнение тегов различных реализаций

В приведенной ниже таблице сравниваются теги, доступные в каждой из вышеперечисленных реализаций

РеализацииТег простого выражения. <%= %>Тег простого выполнения. <% %>Простой комментарий тег. <%# %>Возможность настройки шаблона тегаСокращенное обозначение тегов<%~ %><%+ %><%<><%|>
erbДаДаДаНетДа, <%xy%>можно записать как % xy.НетНетНетНет
erubisДаДаДаДа, можно изменить шаблон тега на что угодно.

пример - [%%]и т. Д.

Да,

, поскольку шаблоны тегов можно менять.

НетНетНетНет
emberДаДаДаНетДа, <%xy%>можно записать как % xy.Содержимое тега оценивается как шаблон eRuby.Содержимое тега оценивается как код Ruby и, как ожидается, будет путем, указывающим на файл шаблона Ruby, который читается, оценивается и отображается.То же, что и <%+ %>, но содержимое файла просто отображается на выходе.Обрабатывает вложенный код как блок кода Ruby и (при необходимости) добавляет ключевое слово doв тело тега.
См. Также
  • Портал бесплатного программного обеспечения с открытым исходным кодом
Ссылки
  1. ^ Brown, Грегори (2009). Лучшие практики Ruby. О'Рейли. Стр. 279 –281. ISBN 978-0596523008.
  2. ^ С., Руби; Д., Томас; Ханссон Д., Хайнемайер (2011). Гибкая веб-разработка с помощью Rails. Прагматичные программисты. п. 35. ISBN 978-1-934356-54-8.
  3. ^ Эллис, Стюарт (1 июля 2016 г.). «Введение в шаблоны ERB». Дата обращения 12 сентября 2016.
  4. ^ «ERB». 23 февраля 2015 г. Источник: 12 сентября 2016 г.
  5. ^«ERB - Ruby Templating». 2016. Дата обращения 12 сентября 2016.
  6. ^"ember (1)". 29 июня 2011 г. Дата обращения 12 сентября 2016 г.
  7. ^«Erubis». 2011. Проверено 12 сентября 2016.
Внешние ссылки
Последняя правка сделана 2021-05-18 03:13:07
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте