Hi all, I’ve developed a library called procedure.async, which provides async procedures for Clojure
Why?
- It’d be interesting to have re-frame’s reg-sub like flow on the backend (we have reg-pro - register procedure) - which forces us to develop handlers in a certain way
-
reg-pros have dependencies (similar to reg-sub’s
:<- [:some-procedure-id]
) and they realize asynchronously, so that gives some computational power - It allows a more natural way to keep frontend and backend code in the same file (.CLJC)
- Frontend communicates via procedure’s id directly (e.g.
(dispatch-pro [:procedure-id payload-map])
- like dispatching re-frame event) - We can implement re-usable/high-level UI components in the same file with reg-pros, allowing us to have a close view of what is happening in a single unit
- This design makes it easier to apply changes for both sides
- Feels like Storybook for both frontend and backend!