ERB vs HAML vs SLIM - Randy Schifflin

6.9k

ERB vs HAML vs SLIM - Randy Schifflin

B044a0f039af800f4df09bf3b2465f18?s=128

Las Vegas Ruby Group

July 17, 2013
Tweet

Transcript

  1. ERB vs HAML vs Slim by Randy Schifflin

  2. ERB, HAML and Slim are all Template Engines. They take

    some source template and data and produce a formatted output. Template Engines
  3. ERB (Embedded Ruby) • ERB is the Ruby language's built-in

    template engine. • Uses expression tags <%= ... %> and scriptlet tags <% ... %> • Useful for embedding Ruby in any kind of source document, most commonly HTML and XML.
  4. ERB - The Good Why is ERB useful? ◦ Familiar

    HTML-style syntax ◦ Simple learning curve ◦ Easy to figure out what a given tag is doing
  5. ERB - The Bad The problem with using ERB to

    write HTML is that it takes an already verbose syntax format like HTML and adds even more clutter!
  6. HAML (Hypertext Abstraction Markup Language) HAML is a template engine

    designed to provide a layer of abstraction above HTML. It uses a clean, concise syntax which compiles down to HTML and offers several usability benefits.
  7. HAML Features DRY! Short, easy tags White-space scoping Filters for

    other template engines Rails support And much more!
  8. HAML- The Bad • Parsing is slower than ERB •

    The syntax can be minimized further; attributes still require hashes, for example.
  9. Enter... Slim Slim is another lightweight templating engine. Inspired by

    HAML, Slim offers extended functionality with an arguably more expressive syntax and a quicker compilation speed.
  10. So... which should you choose? Use ERB if... You don't

    want to learn a new syntax. You need lightning-fast templates. You don't want to add additional gems You don't care for pretty code
  11. So... which should you choose? Otherwise, learn HAML or Slim!

    Both are excellent choices for what they do. HAML is generally more common. Slim provides better speed and extended functionality. The choice is mostly personal preference.
  12. Fin