On Friday, March 13, 2015 at 6:04:21 AM UTC+11, Jamie Orchard-Hays wrote: > As I'm starting to explore re-frame in a playground app, one of my first > questions is "how does one namespace handlers in a medium to large app?" I'm > thinking you'd just simple namespace the keyname: > > (register-handler > :foo/update-name > ....) > > Is this your approach Mike, or do you handle it differently?
Let's say you have N "panels" which you'd like to treat as "separate" for some reason. These "panels" might be different "tabs", "dialogs", popups, etc. Under src/panels, we create a folder for each panel, and in each such folder we have the files: handlers.cljs, subs.cljs, db.cljs, view.cljs. All with fairly obvious contents (see todoMVC). For us, db.cljs always contains a Prismatic Schema for the data associated with that panel, plus there's a def called `db-root` which is effectively the path within `app-db` for this panel's data. So all the registrations in handlers.cljs have "path" middleware pointing them to `db-root` Back to answering your question ... when it comes to handlers we tried three approaches: (register-handler [:panel-id :event-id] ;; the event id can be more than just a keyword some-handler-fn) (register-handler :panel-id-event-id ;; some sort of mash up keyword some-handler-fn) (register-handler :panel-name/some-id ;; namespaced keyword some-handler-fn) They all work, I favour the last one, which just so happens to match your suggestion. If ever there is a clash on id (you try to register two handlers for the same id) you get warnings in the console. (It is allowed because we want figwheel reloads to work). So this has been a long way of saying "yes, I agree". -- Mike -- 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.
