2010-12-27 14 views
8

Zaczynam bardziej intensywnie pracować nad rozwojem RoR. ERB nie do końca mi odpowiada. Zrobiłem to wcześniej z JSP. Osadzanie kodu Ruby w moich znacznikach nie wydaje się dobrym planem, nawet jeśli logika jest specyficzna dla widoku. Być może moje obawy są bezpodstawne, ale wydaje się niebezpieczne. Poza tym jest dużo pisania na klawiaturze.Alternatywy dla ERB

Znalazłem HAML i daję mu trochę więcej oceny. Jeśli jest to dobra alternatywa, być może możesz dać jej dobre zasoby.

Beyond HAML, jakie są inne alternatywy dla ERB dla warstwy widoku Rails?

Czy moje obawy związane z ERB są nieuzasadnione?

Odpowiedz

7

Jeśli nie lubisz Rubiego w swoich poglądach, HAML nie pomoże ci. Chociaż syntaktycznie bardziej succint, używa osadzonej Ruby, tak jak robi to ERB.

Jeśli chcesz uniknąć logiki w swoich widokach, spójrz na coś takiego jak Mustache. Używa stylu szablonowego, który kładzie nacisk na bardziej ścisłe oddzielenie logiki od prezentacji (widoki bez logiki).

12

Wbudowany kod Ruby w szablonie nie stanowi problemu. Oferuje on potężną moc Erb i Haml jako języki szablonów. W rzeczywistości wiele języków szablonów cierpi, ponieważ szablony nie zawierają kodu (np. Język szablonu Django).

Prawdziwy problem, że czasami pojawia się, gdy deweloper przykleja skomplikowanego kodu, lub kod ciągnięcie danych lub kod aktualizowania danych lub kodu podejmowania decyzji, do szablonu.

Ruby i Rails oferują programistom niesamowitą moc i elastyczność. Odpowiedzialność za to ponosi deweloper. Odzyskaj dane z poziomu kontrolera. Przenieś złożony kod do pomocnika. Itd.

<%= link_to edit_post_path(@post) do %> 
    Edit post "<%= @post.title %>"!!! 
<% end %> 

Powyższe jest proste osadzone Ruby i dobrze siedzi w widoku. Wersja haml jest:

= link_to edit_post_path(@post) do 
    Edit post "#{@post.title}"!!! 

Tak długo, jak zachować kod proste i każdy złożony kod zostanie przeniesiony do sterownika lub pomocnika, będzie w porządku.

Należy pamiętać, że szablony Haml i Erb zawierają równe ilości osadzonego kodu Ruby, z wyjątkiem tego, że odrzuceń Haml wszystkich end s.

+0

Hej, schludnie! Kiedyś linie musiały zaczynać się od '== 'w celu interpolacji, ale wygląda na to, że tak już nie jest. TIL! :RE – Matchu

0

ja, jak ty, idę do Rails (Ruby) i po odbyciu trochę czasu w Javie. Miałem trzeźwą reakcję, gdy zobaczyłem ERB, wspominając złe stare dni JSP, zanim odkryłem Velocity i Freemarker.

Zresztą, szukam w dwóch językach szablonów, które mogą Cię interesować:

Jeśli Handlerbars Cię interesuje, zobacz również Handlerbars.rb. Jest jeszcze jeden inny projekt o tej nazwie, ale ten nie jest portem Ruby Handlerbars, ale otokiem Ruby wokół Handlerbars.js. Tak więc to "prawdziwe Handlerbary".