Pull to refresh

Comments 7

А чем оно отличается от _why's Markaby? Markaby, как мо мне, на первый взгляд приятнее и проще, а его дальнейшее развитие в виде Mab ещё и работает весьма и весьма быстро.
markaby и mab добавляют волшебства типа div.comment в то время как arbre остается на уровне привычной рубишной семантики, но главное позволяет легко создавать компоненты.

Ну, а в остальном да — похожи, могут служить неплохой заменой.
Взял пример «A simple example» с страницы Arbre на гитхабе, прогнал по бенчмаркам, чтобы сравнить с mab:
bench(10_000) do
    Arbre::Context.new do
      h2 "Why Arbre is awesome?"

      ul do
        li "The DOM is implemented in ruby"
        li "You can create object oriented views"
        li "Templates suck"
      end
    end.to_s
end

#       user     system      total        real
#   2.440000   0.010000   2.450000 (  2.450263)


bench(10_000) do
    Mab::Builder.new do
        h2 "Why Arbre is awesome?"

        ul do
          li "The DOM is implemented in ruby"
          li "You can create object oriented views"
          li "Templates suck"
        end
    end
end

#       user     system      total        real
#   0.730000   0.010000   0.740000 (  0.735942)


Разница в 3 раза. Это дофига! И компоненты, имхо, не стоят того. :)
А потом говорят что рельсы медленные :)
ИМХО конечно, но вёрстка в хелпере — такой же антипаттерн, как и код в вёрстке. считаю, что как только в хелпере и всём подобном появляется больше одного тега, их надо выносить в шаблоны. и я не раз уже наблюдал подобное:

def title(text)
  "<div id='title'>#{text}</div>"
end
Не стоит так категорично, право, не стоит. Если начинать выносить всё в шаблоны, мы будем наблюдать вложенности паршиалов до 10 штук один в другом, это тоже не здорово ни разу. Своими глазами видел. Лучше всё таки хелперы.
«кастомный элемент стало сложно понимать. В его структуре легко запутаться.»
Не согласен, все просто. А на этом утверждении строится вся статья.

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

Мы уже привыкли к haml и slim, а тут придется снова копаться в документации, чтобы протолкнуть какой-нибудь data-attribute, я это быстрее напишу в старых добрых традициях. Но это спорное утверждение, опустим, но я это вижу минусом.

Да рельсовики энтузиасты, да sass, haml, less и slim прижились в кратчайшие сроки, на столько, что в генератора coffee-rails и sass-rails лежит. Но sass, haml итп языки общего назначения. Когда arbre используется только в одном месте, и если бы я это увидел без статьи я бы поломал себе мозг, чем надолго остановил бы работу. Тем более, что давно уже не использую в работе IDE.

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

Sign up to leave a comment.

Articles