Cells

huidige View layer

  • Modulariteit
  • Partials (kleine views)
  • Helpers (methodes)
  • Logica buiten de view houden

Situatie nu

  • ''Geen lastige code in je views!!1!!!''
  • Nog steeds vaak grote views
  • Veel code
  • Waarom dan?

PHP

  • View layer is geïnspireerd door PHP
  • Weinig kleine componenten
  • Globale functies (helpers)
  • Simpel te begrijpen, maar lastig onderhoudbaar

View models

  • Bijvoorbeeld Django, Symfony, Phoenix
  • Losse fragmenten voor views
  • Voor Rails: Cells

Cell

  • Object dat een fragment rendert
  • Doet mij denken aan nieuwe WP opzet & React
  • Overal te gebruiken (action, view, mailer)

Renderen

​<%= cell(:comment, @comment) %>

 

Wordt gerenderd door een helper (ironisch)

Renderen

comment = Comment.new(body: "Hoi")
cell(:comment, comment) #=> "<div>... HTML"

 

Helper doet het volgende:

​CommentCell.new(comment).call

 

Blabla

Demo

Voordelen

  • Sneller
    • Maakt geen gebruik van ActionView
    • Cells render stack is ~50 regels code
    • ActionView ~7000
    • Tot 10x sneller
  • Cellen zonder logica
  • Herbruikbaarheid

Geavanceerd gebruik

  • Cellen testen
  • Cellen nesten
  • Overerven van views
  • Caching
Made with Slides.com