Just wanted to thank you guys for sharing your approaches, its much appreciated.

I will think through those and try to find the best approach for me.

Thanks again,
Niko


On Wednesday, October 8, 2014 2:30:37 PM UTC+2, Nikolas Göbel wrote:
> Hey everyone,
> 
> I've started experimenting with ClojureScript + OM for a rewrite of a 
> medium-sized Web-App. I started in PlainJS + React/Flux but quickly found 
> myself hacking together things already available in ClJS, so now I'm here.
> 
> May I ask for some feedback on the architecture im planning? Especially if 
> I'm missing/violating any established practices:
> 
> As in Flux, I plan to establish a single core.async channel on which every 
> action the user triggers is published as some kind of tagged event. My first 
> idea was to have components in the hierarchy subscribe to different tags, 
> depending on their level of knowledge. A top-level component would then carry 
> out the actual app-state transaction. This is a variation of the channel 
> based communication shown in the Basic Tutorial[1] except that my approach 
> would rely on a single shared channel and tagged events, instead of different 
> channels for each purpose.
> 
> Thinking further about the problem I came to the conclusion that separating 
> transaction handling from the component hierarchy would be much more 
> desirable. 
> My rationale for this is that having components update the app-state kind of 
> breaks the unidirectional flow paradigm. Also, I would prefer to have all 
> logical interactions of the UI abstracted away, such that it becomes reusable 
> (maybe for mobile applications).
> 
> Flux kind of solves this by intertwining Stores with update logic (which is 
> ok I guess, but not possible with an atom). I figured that in CLJS I would 
> simply subscribe functions to the dispatcher channel and have them transact 
> the app-state atom. 
> 
> Since I can't om/transact! on the atom directly, I would like to know if 
> there is a way to pass cursors / create new cursors outside of the component 
> hierarchy? Or can I use swap! instead? Would I be losing anything more than 
> the tx-chan observability (which I really don't want to lose...)?
> 
> Thank you and please feel free to completely tear apart any of this if it 
> doesn't make sense in CLJS world (which I'm rather new to).
> 
> 
> [1] - 
> https://github.com/swannodette/om/wiki/Basic-Tutorial#intercomponent-communication

-- 
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