ERb alternatyvos
Upcoming SlideShare
Loading in...5
×
 

ERb alternatyvos

on

  • 1,622 views

ERb alternatyvų prezentacija RubyConfLT 2010

ERb alternatyvų prezentacija RubyConfLT 2010

Statistics

Views

Total Views
1,622
Views on SlideShare
1,507
Embed Views
115

Actions

Likes
0
Downloads
3
Comments
0

2 Embeds 115

http://emptydot.com 99
http://www.slideshare.net 16

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

ERb alternatyvos ERb alternatyvos Presentation Transcript

  • ERb alternatyvos RubyConfLT 2010 Vidmantas Kabošis vidmantas.kabosis.lt
  • Kas yra kas (intro)  Šablono variklis == template engine  Greitis  Saugumas
  • ERb  Embedded Ruby  <%= … %>  ERB - kartu su standartiniu Ruby  Autsaideris greičio ir saugumo atžvilgiu  Turi realizacijų, sprendžiančių jo problemas  eruby  erubis  Ember  rbTenjin 3
  • eruby  C 4
  • erubis  Ruby  Greitesnis už ERB, eruby  Keičiamas įterpimo šablonas  Automatinis eskeipinimas  Kešavimas (preprocessing)  [%= link_to 'Create', :action=>'create'%]  Priima vykdymo nurodymus (processing instructions) šablonuose  Rails 3 5
  • erubis http://www.kuwata-lab.com/erubis/ 6
  • ember  Ruby  Gali automatiškai papildyti trūkstamais <% end %> pagal identaciją  Klaidų pranešimuose naudoja teisingus eilučių numerius  Papildomos instrukcijos  <%+ "doc/example.erb" %>  Ruby on Rails 7
  • rbTenjin (1/3)  Lengvas, greitas (greičiausias?)  Saugus ,,pagal nutylėjimą”  Layouts, partials  Konvertuoto kodo kešavimas  …  Savybėmis labai panašus į erubis 8
  • rbTenjin (2/3) http://www.kuwata-lab.com/tenjin/ 9
  • rbTenjin (3/3) ###### layout <html> <body> <h1>${@title}</h1> <div class="main-content"> #{@_content} </div> ... ###### template <table> <?rb i = 0 ?> <?rb for item in @items ?> <?rb i += 1 ?> <?rb color = i % 2 == 0 ? '#FFCCCC' : '#CCCCFF' ?> <tr bgcolor="#{color}"> <td>#{i}</td> <td>${item}</td> </tr> <?rb end ?> </table> 10
  • Kitas požiūris  TAL  Smarty-like (Liquid)  Ruby DSL  wiki-style  Kiti :-) 11
  • TAL  Template Attribute Language  Elementai žymimi TAL aprašo atributais  Validus XML/HTML dokumentas  Parašytas ,,Zope”  TALES, METAL  Ruby realizacijos:  Amrita/Amrita2  Kwartz 12
  • TAL: Amrita (1/3) http://amrita.sourceforge.jp/ 13
  • TAL: Amrita (2/3)  ,,Pure XML/HTML document”  <? … ?>, <%= … %>  Išvestį kontroliuoja duomenys  Gali būti sukompiliuotas į ruby  Amrita 2 14
  • TAL: Amrita (3/3) <table border="1"> <tr> <th>name</th><th>author</th> </tr> <tr id="table1"> <td id="name"> <td id="author"> </tr> </table> # data data = { :table1=>[ { :name=>"Ruby", :author=>"matz" }, { :name=>"perl", :author=>"Larry Wall" }, { :name=>"python", :author=>"Guido van Rossum" }, ] } 15
  • TAL: Kwartz  ,,Independence of Presentation Logic”  Šablonas + šablono logika (plogic) #list1 { logic: { for member in @members _stag # start tag _cont # content _etag # end tag end } } <tr id="list1"> <td id="mark:item1">foo</td> </tr> 16
  • TAL DHH: The pursuit of "no code"-templates reminds me of the search for the holy grail of the MDA camp with "no code"-programs. It's mirage, but its also a play on words of the "a rose by any other name..." variety. http://www.loudthinking.com/arc/000405.html 17
  • Smarty-like (Liquid)  Atskira ,,kalba” šablonuose  Ruby realizacijos:  Liquid  Ruty 18
  • Liquid (1/2)  Iš ,,Shopify”, naudojamas production'e  Ruby on Rails  Saugus  Sintaksė panaši į Ruby  Plečiama (tagai, filtrai, blokai) 19
  • Liquid (2/2) Hello {{ '*rubyconf*' | textilize | upcase }} {% if user.name == 'bob' and user.age > 45 %} Hello old bob {% endif %} # array = [1,2,3,4,5,6] {% for item in array limit:2 offset:2 %} {{ item }} {% endfor %} # results in 3,4 20
  • Ruty  Ištakos: Django / Jinja Template Engine  Šablonų paveldėjimas  Sintaksė visiškai analogiška Liquid (?)  Papildomos saugumo priemonės  Lėtesnis už ERB, bet greitesnis už Liquid 21
  • Ruby DSL  Priešingai nei ERB/TAL/Liquid, aprašo šablonus su ,,pure Ruby”  Pagrindinis žaidėjas - ,,Markaby”  ,,Maline” - miręs  Builder::XmlMarkup – tik XML dokumentams 22
  • Ruby DSL: Markaby  ,,Markup as Ruby”  Naudojamas ,,Camping” microframework'e  Lengvai integruojamas į Rails  Susidūrusiems su DSL, lengvai perprantamas html do head do title 'Products: ' + action_name stylesheet_link_tag 'scaffold' end body do p flash[:notice], :style => "color: green" self << yield end end 23
  • wiki-style  Nėra tikrosios ,,šablonų kalbos”  Skirtos vartotojų įvesčiai apdoroti  Markdown:  BlueCloth, Maruku, Kramdown, RDiscount  Textile:  RedCloth, ? 24
  • Kiti  HAML  Radius 25
  • Kiti: HAML (1/2)  ,,Markup haiku”  Principai:  Markup should be DRY  Markup should be well-intended  HTML structure should be clear  Markup should be meaningful  HAML sesutė CSS'ui: SASS 26
  • Kiti: HAML (2/2)  Klasė žymima ., id - #, atributai - (), tag'as - % #content .left.column %h2 Welcome to rubyconf! %p= print_information .right.column = render :partial => "sidebar" 27
  • Kiti: Radius  Šablonų kūrimui  Leidžia patogiai apibrėžti savo tag'us ir juos parsinti  Šablonas – beveik XML (namespace) context.define_tag "hello" do |tag| "Hello #{tag.attr['name'] || 'World'}!" end parser = Radius::Parser.new(context) parser.parse('<p><radius:hello name="RubyConf" /></p>') 28
  • Pabaigai  Svarbiausia – produktyvumas  Naudojami:  ERB plačiąja prasme  HAML  Liquid 29
  • end ? 30