eRuby
Эта статья содержит инструкции, советы и инструкции . ( октябрь 2016 г. ) |
Эту статью может потребовать очистки Википедии , чтобы она соответствовала стандартам качества . Конкретная проблема заключается в следующем: непоследовательные вики-ссылки, использование заглавных букв и общее нечеткое написание повсюду. ( Август 2022 г. ) |
Другие имена | Еврорадио |
---|---|
Репозиторий | github |
Написано в | Руби |
Тип | Шаблонизатор |
Лицензия | Лицензия BSD, 2 пункта |
Embedded Ruby (также сокращенно ERB ) — это система шаблонов , которая встраивает Ruby в текстовый документ. Он часто используется для встраивания кода Ruby в документ HTML , подобно ASP и JSP , а также PHP и другим языкам сценариев на стороне сервера. Система шаблонов eRuby объединяет код Ruby и простой текст для обеспечения управления потоком данных и замены переменных, что упрощает поддержку объединенного кода. [ 1 ]
Модуль View Ruby on Rails отвечает за отображение ответа или вывода в браузере. В своей простейшей форме представление может представлять собой часть HTML- кода со статическим содержимым. Для большинства приложений просто статического контента может быть недостаточно. Многим приложениям Ruby on Rails потребуется динамического контента, созданного контроллером отображение (методом действия). Это стало возможным благодаря использованию Embedded Ruby для создания шаблонов, которые могут содержать динамический контент. Встроенный Ruby позволяет встраивать код Ruby в документ представления. Этот код заменяется правильным значением, полученным в результате выполнения кода во время выполнения. Но, имея возможность встраивать код в документ представления, мы рискуем преодолеть четкое разделение, присутствующее в кадре MVC . Таким образом, разработчик несет ответственность за четкое разделение ответственности между модулями модели, представления и контроллера его/ее приложения. [ 2 ]
Использование
[ редактировать ]eRuby позволяет встраивать код Ruby в пару <%
и %>
разделители . Эти встроенные блоки кода затем оцениваются на месте (они заменяются результатом их оценки). Помимо создания веб-страниц, eRuby также можно использовать для создания XML-документов , RSS- каналов и других форм структурированных текстовых файлов. eRuby динамически генерирует статические файлы на основе шаблонов . Эти функциональные возможности eRuby можно найти в библиотеке ERB.
В шаблонах ERB используются следующие типы маркеров тегов:
- Теги выражений
- Теги выполнения
- Теги комментариев [ 3 ]
Теги выражений
[ редактировать ]<%= %>
: Это указывает на то, что тег содержит выражение. Такой тег начинается с открывающего разделителя тега, за которым следует символ равенства, и заканчивается разделителем конечного тега . Во время рендеринга шаблона этот фрагмент кода заменяется результатом кода. Если вычисленный результат не является строкой, он преобразуется в строку перед обработкой. Например:
require 'erb'
x = 500
template = ERB.new("The value of x is: <%= x %>")
puts template.result(binding)
Результирующий текст выглядит следующим образом: Значение x: 500. [ 1 ]
Теги выполнения
[ редактировать ]<% %>
: Код, заключенный в такие теги, называется скриптлетом . Код в таком теге выполняется, и его результат заменяется вместо скриптлета. Такие теги должны иметь соответствие <% end %>
тег для обозначения конца функционального блока. Например: [ 4 ]
<ul>
<% 4.times do %>
<li>list item</li>
<% end %>
</ul>
В приведенном выше примере элемент текстового списка печатается четыре раза. Скриптлет не создает никакого текста сам по себе, он только заставляет вложенный оператор выполняться несколько раз. Вывод приведенного выше кода:
- элемент списка
- элемент списка
- элемент списка
- элемент списка
Теги комментариев
[ редактировать ]<%# %>
: Содержимое тегов комментариев не отображается в выходных данных. Такие теги начинаются с открытого разделителя тега, за которым следует символ решетки и заканчиваются разделителем конечного тега. Пример тега комментария показан ниже: [ 5 ]
<%# ruby code %>
Это то же самое, что комментарий в Ruby. Весь код Ruby после # игнорируется и ничего не генерирует.
Другие теги
[ редактировать ]Другие вещи, распространенные в eRuby, просто распространены в Ruby, например, замена строк с помощью #{string_name}
, что аналогично в таких языках, как Perl или PHP .
Новые строки в eRuby можно подавить, добавив дефис в начале разделителя конечного тега. Например:
<%2.times do -%>
<%= @name %>
<% end -%>
В выводе приведенного выше кода значение имени печатается дважды в одной строке. [ 1 ] [ 3 ]
Реализации
[ редактировать ]Существует несколько реализаций eRuby, а именно:
- Еврорадио
- тебе будет стыдно
- человек
ээээээ
[ редактировать ]erb — это реализация eRuby, написанная исключительно на языке программирования Ruby и включенная в стандартную библиотеку Ruby. [ 2 ]
Шаблон можно создать, запустив фрагмент кода, написанный с использованием объекта ERB. Простой пример показан ниже:
require 'erb'
x = 400
simple_template = "Value of x is: is <%= x %>."
renderer = ERB.new(simple_template)
puts output = renderer.result(binding)
Результат выглядит следующим образом: Значение x: 400.
То же самое можно достичь, используя приведенный ниже код, который не использует объект ERB:
x = 400
string = "The value of x is: #{x}"
puts string
Оба приведенных выше фрагмента кода генерируют один и тот же результат. Но что произойдет, если мы поменяем местами строки 2 со строкой 3 в первом фрагменте кода и строку 1 со строкой 2 во втором фрагменте кода? Первый фрагмент изменится на код, показанный ниже:
require 'erb'
simple_template = "Value of x is: is <%= x %>."
x = 400
renderer = ERB.new(simple_template)
puts output = renderer.result(binding)
Это по-прежнему генерирует тот же результат. т. е. значение x равно: 400.
Второй фрагмент кода изменится на следующий код:
string = "The value of x is: #{x}"
x = 400
puts string
Приведенный выше код не будет выполнен. Это связано с тем, что первая строка не знает значения x при выполнении. Таким образом, основная причина использования объекта ERB — заранее написать шаблоны путем привязки переменных и методов, которые могут не существовать в данный момент. Шаблон обрабатывается только тогда, когда результат вызывается для объекта ERB. Чтобы получить доступ к методам экземпляра и переменной экземпляра объекта, ERB использует объект привязки . Доступ к переменным и методам объекта предоставляется частным объектом привязки , который существует в каждом классе Ruby. легко Получить доступ к методам и переменным внутри метода класса . Но для доступа к переменным другого класса этот класс должен будет предоставить свой объект привязки через открытый метод. Пример показан ниже: [ 2 ] [ 4 ]
class ERBExample
attr_accessor:variable1
# using bind to access class variables
def render()
renderer.result(binding)
end
def initialize(variable1)
@variable1 = variable1
end
# Expose private binding() method.
def get_binding
binding()
end
end
example = ERBExample.new(variable1)
renderer = ERB.new(template)
puts output = renderer.result(example.get_binding)
Как мы видим в приведенном выше примере, мы предоставляем объект привязки класса ERBExample. Кроме того, мы использовали объект привязки для доступа к переменным и методам класса внутри одного из его методов.
метод new() ERB
[ редактировать ]метод Новый объекта ERB принимает еще два параметра . Второй параметр определяет уровень безопасности. Указав число во втором параметре (максимальное значение = 4), можно запустить шаблон в другом потоке . Значение числа определяет уровень безопасности. На максимальном уровне изоляции, если объект привязки не помечен как доверенный, ERB не сможет его использовать. Третий параметр указывает необязательные модификаторы. Их можно использовать для управления добавлением новых строк в вывод. Например, чтобы убедиться, что ERB не выводит новые строки после завершения тега, мы можем создать объект ERB, как показано ниже. [ 3 ] [ 4 ]
renderer = ERB.new(template, 3, '>')
Чтобы предоставить только третий параметр и игнорировать второй параметр, используйте 0 в качестве входного значения для второго параметра.
В ERB есть много других методов, которые можно использовать для визуализации шаблона. Полный список API, предоставляемых объектом ERB, см. в документации ERB, приведенной в справочном разделе.
Запуск ERB из командной строки
[ редактировать ]Как уже объяснялось в предыдущих разделах, erb используется для создания шаблонов. Это часто используется для создания веб-страниц или других текстовых файлов. Обычно требуется erb, чтобы отправить вывод в нужный файл. Чтобы добиться этого, мы можем использовать возможность перенаправления, предусмотренную в командной строке , и перенаправить вывод в файл, а не выводить его на стандартный вывод. [ 3 ]
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. [ 3 ]
erb -S 4 sample1.erb.txt > my_view.html.erb
тебе будет стыдно
[ редактировать ]Erubis — это реализация eRuby, реализованная в Ruby, а также в Java . Согласно его домашней странице, он работает быстрее, чем eRuby и ERb, и имеет несколько полезных опций, включая альтернативные теги, позволяющие использовать действительный XML .
человек
[ редактировать ]ember — это чистая реализация eRuby для Linux на Ruby . Он позволяет отлаживать шаблоны eRuby, улучшает их компоновку и предоставляет мощные сокращенные директивы eRuby.
Сравнение различных тегов реализации
[ редактировать ]В таблице ниже сравниваются теги, доступные в каждой из вышеперечисленных реализаций. [ 4 ] [ 6 ] [ 7 ]
Реализации
|
Тег простого выражения <%= %>
|
Простой тег выполнения <% %>
|
Простой тег комментария <%# %>
|
Возможность настройки шаблона тегов | Краткое обозначение тегов от руки | <%~ %>
|
<%+ %>
|
<%< >
|
<%| >
|
---|---|---|---|---|---|---|---|---|---|
ээээээ
|
Да | Да | Да | Нет | Да, <%xy%> можно записать как %xy .
|
Нет | Нет | Нет | Нет |
тебе будет стыдно
|
Да | Да | Да | Да, можно изменить шаблон тега на что угодно.
бывший - |
Да,
поскольку можно изменить шаблоны тегов. |
Нет | Нет | Нет | Нет |
человек
|
Да | Да | Да | Нет | Да, <%xy%> можно записать как %xy .
|
Содержимое тега оценивается как шаблон eRuby. | Содержимое тега оценивается как код Ruby и, как ожидается, представляет собой путь, указывающий на файл шаблона Ruby, который считывается, оценивается и отображается. | То же, что <%+ %> но содержимое файла просто отображается на выходе.
|
Рассматривает вложенный код как блок кода Ruby и (при необходимости) добавляет do ключевое слово в тело тега.
|
См. также
[ редактировать ]- mod_ruby
- Пассажир Phusion ( mod_rails )
- ветчина
- РДок
- Шипби
Ссылки
[ редактировать ]- ^ Jump up to: а б с Браун, Грегори (2009). Лучшие практики Ruby . О'Рейли. стр. 279–281 . ISBN 978-0596523008 .
- ^ Jump up to: а б с С., Руби; Д., Томас; Ханссон Д., Хайнемайер (2011). Гибкая веб-разработка с помощью Rails . Прагматичные программисты. п. 35. ISBN 978-1-934356-54-8 .
- ^ Jump up to: а б с д и Эллис, Стюарт (1 июля 2016 г.). «Введение в шаблоны ERB» . Проверено 12 сентября 2016 г.
- ^ Jump up to: а б с д «ЭРБ» . 23 февраля 2015 года . Проверено 12 сентября 2016 г.
- ^ «ERB – Шаблоны Ruby» . 2016 . Проверено 12 сентября 2016 г.
- ^ "уголь(1)" . 29 июня 2011 года . Проверено 12 сентября 2016 г.
- ^ «Эрубис» . 2011. Архивировано из оригинала 27 марта 2017 года . Проверено 12 сентября 2016 г.
Внешние ссылки
[ редактировать ]- Библиотека Еврорадио
- «Ruby и Интернет» , глава из «Руководства прагматичного программиста».
- "web-mode.el" , основной режим emacs для редактирования шаблонов eRuby.
- ERB – Шаблоны Ruby
- эрб документация
- Стандартная библиотека Ruby
- Документация Erubis. Архивировано 27 марта 2017 г. на Wayback Machine.
- документация Ember