Top Banner
ERb alternatyvos RubyConfLT 2010 Vidmantas Kabošis vidmantas.kabosis.lt
30

ERb alternatyvos

Jun 22, 2015

Download

Technology

ERb alternatyvų prezentacija RubyConfLT 2010
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: ERb alternatyvos

ERb alternatyvos

RubyConfLT 2010Vidmantas Kabošisvidmantas.kabosis.lt

Page 2: ERb alternatyvos

Kas yra kas (intro)

Šablono variklis == template engine Greitis Saugumas

Page 3: ERb alternatyvos

3

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

Page 4: ERb alternatyvos

4

eruby C

Page 5: ERb alternatyvos

5

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

Page 6: ERb alternatyvos

6

erubis

http://www.kuwata-lab.com/erubis/

Page 7: ERb alternatyvos

7

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

Page 8: ERb alternatyvos

8

rbTenjin (1/3)

Lengvas, greitas (greičiausias?) Saugus ,,pagal nutylėjimą” Layouts, partials Konvertuoto kodo kešavimas … Savybėmis labai panašus į erubis

Page 9: ERb alternatyvos

9

rbTenjin (2/3)

http://www.kuwata-lab.com/tenjin/

Page 10: ERb alternatyvos

10

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>

Page 11: ERb alternatyvos

11

Kitas požiūris

TAL Smarty-like (Liquid) Ruby DSL wiki-style Kiti :-)

Page 12: ERb alternatyvos

12

TAL

Template Attribute Language Elementai žymimi TAL aprašo atributais Validus XML/HTML dokumentas Parašytas ,,Zope” TALES, METAL Ruby realizacijos:

Amrita/Amrita2 Kwartz

Page 13: ERb alternatyvos

13

TAL: Amrita (1/3)

http://amrita.sourceforge.jp/

Page 14: ERb alternatyvos

14

TAL: Amrita (2/3)

,,Pure XML/HTML document” <? … ?>, <%= … %>

Išvestį kontroliuoja duomenys Gali būti sukompiliuotas į ruby Amrita 2

Page 15: ERb alternatyvos

15

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>

# datadata = { :table1=>[ { :name=>"Ruby", :author=>"matz" }, { :name=>"perl", :author=>"Larry Wall" }, { :name=>"python", :author=>"Guido van Rossum" }, ]}

Page 16: ERb alternatyvos

16

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>

Page 17: ERb alternatyvos

17

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

Page 18: ERb alternatyvos

18

Smarty-like (Liquid)

Atskira ,,kalba” šablonuose Ruby realizacijos:

Liquid Ruty

Page 19: ERb alternatyvos

19

Liquid (1/2)

Iš ,,Shopify”, naudojamas production'e Ruby on Rails Saugus Sintaksė panaši į Ruby Plečiama (tagai, filtrai, blokai)

Page 20: ERb alternatyvos

20

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

Page 21: ERb alternatyvos

21

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

Page 22: ERb alternatyvos

22

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

Page 23: ERb alternatyvos

23

Ruby DSL: Markaby

,,Markup as Ruby” Naudojamas ,,Camping” microframework'e

Lengvai integruojamas į Rails

Susidūrusiems su DSL, lengvai perprantamashtml do head do title 'Products: ' + action_name stylesheet_link_tag 'scaffold' end body do p flash[:notice], :style => "color: green" self << yield endend

Page 24: ERb alternatyvos

24

wiki-style

Nėra tikrosios ,,šablonų kalbos” Skirtos vartotojų įvesčiai apdoroti Markdown:

BlueCloth, Maruku, Kramdown, RDiscount

Textile: RedCloth, ?

Page 25: ERb alternatyvos

25

Kiti

HAML Radius

Page 26: ERb alternatyvos

26

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

Page 27: ERb alternatyvos

27

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"

Page 28: ERb alternatyvos

28

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>')

Page 29: ERb alternatyvos

29

Pabaigai

Svarbiausia – produktyvumas Naudojami:

ERB plačiąja prasme HAML Liquid

Page 30: ERb alternatyvos

30

end

?