I've spent the last few days digging into Rum (insert hangover joke here) and 
it's awesome!

I started out porting a non-trivial Reagent app to Rum, which ended up taking 
only a few hours by utilizing the rum/reactive mixin.  Of course, during this 
process I saw several places where taking a mixin-based approach would simplify 
things, so the last couple of days I've been refining my code and creating 
better abstractions.  

I really like the way my app is taking shape using this approach.  Maybe it's 
just me, but Rum "just fits" the way I think very well.  It reminds me somewhat 
of the BOT approach in Light Table.  Maybe not the perfect analogy, but the 
point is that you can think in terms of component behaviors and abstract those 
out to mix-ins, rather than always thinking in terms of composing/wrapping 
components. 

Rum seems to be a good foundation for creating higher level abstractions or 
DSLs for your UI.  Everything is data and pure functions - the only macro 
(defc) is just sugar. I've only played with this a little, but there's a lot of 
potential here.

Another plus is that Rum makes it trivial to use Datascript.  This was hard to 
do (well) with Reagent and Om, but with Rum I just have a transaction listener 
that calls rum/mount whenever the db changes.  Combined with the prodigious use 
of rum/static for child components, and of course React's native DOM diffing, 
this might be performant enough for my app.  All of my transactions are already 
decorated with :tx-meta tags, so if needed I can easily optimize performance 
further (by having mixins that only trigger re-rendering based on certain 
transactions).  But I'm holding off on that optimization for now.

So far, Rum looks like a winner to me.  Thank you Nikita for Rum and Datascript 
- two of the most innovative libraries in CLJS land so far.

-- 
Note that posts from new members are moderated - please be patient with your 
first post.
--- 
You received this message because you are subscribed to the Google Groups 
"ClojureScript" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojurescript+unsubscr...@googlegroups.com.
To post to this group, send email to clojurescript@googlegroups.com.
Visit this group at http://groups.google.com/group/clojurescript.

Reply via email to