Hi everyone,

I've been playing with Om the past few days both due to my own interest in Om 
itself as well as my long-standing desire to learn ClojureScript. With that in 
mind, I'm relatively new to both.  

After following the Om "Basic Tutorial" I set about creating my own demo app (a 
drag-and-drop rank-voting UI).  One of the concepts I saw introduced in the 
tutorial was using Core.async channels to deal with events and I initially 
copied that paradigm into my app.  Within a few minutes, I was realizing that I 
must be going down an anti-pattern path.

One of the things I like best about Om so far is that it seems to encourage me 
to always be thinking about pieces of functionality as actual "components" 
rather than the traditional MVC paradigm. As I went along, I realized I was 
passing a channel down (via :init-state) through 4+ levels of component 
nesting.  Any time I have to write the same block of code more than twice, I 
question it.

After thinking on it a while, I assume it's probably better to pass the right 
cursor and modify the cursor directly from the interior components.  In my 
case, my hierarchy looked like:

items-view
item-view
item-detail
vote-button

...with the bottom 3 all sharing the same cursor.  

That said, I wanted to ask around to folks using Om what the "idiomatic" 
approach is. I quickly started to think that the Basic Tutorial was likely 
introducing Core.async to help people get familiar with ClojureScript and not 
anticipating the anti-pattern it was establishing. But, since I don't know 
idiomatic approaches yet; I thought I would ask if there was something I'm 
missing in terms of using async channels more effectively.

Thanks for the advice!

Brian

-- 
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 [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/clojurescript.

Reply via email to