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
deck
By Dimitri Snijder
deck
- 35