Respo.cljs
A virtual DOM library built with ClojureScript, inspired by React and Reagent.
Install / Use
/learn @Respo/Respo.cljsREADME
Notice: since the author has moved to Calcit-js, the maintenance has been moved to respo.calcit. And this repo will no longer be developed.
Respo: A virtual DOM library in ClojureScript
Inspired by React and Reagent.
[respo "0.13.11"]
- Home http://respo-mvc.org
- Bundled example
- Docs
Usage
DOM syntax
(div {:class-name "demo-container"
:style {:color :red}
:on-click (fn [event dispatch!])}
(div {}))
Text Node:
(<> content)
; with styles
(<> content {:color :red
:font-size 14})
Component definition:
(defcomp comp-container [content]
(div
{:class-name "demo-container"
:style {:color :red}}
(<> content)))
App initialization:
; initialize store and update store
(defonce *store (atom {:point 0 :states {}}))
(defn dispatch! [op op-data] (reset! *store updated-store))
; render to the DOM
(render! mount-point (comp-container @*store) dispatch!)
Rerender on store changes:
(defn render-app! [] (render! mount-point (comp-container @*store) dispatch!))
(add-watch *store :changes (fn [] (render-app!)))
Reset virtual DOM caching during hot code swapping, and rerender:
(defn reload! []
(clear-cache!)
(render-app!))
Adding effects to component:
(defeffect effect-a [text] [action parent-element at-place?]
(println action) ; action could be :mount :update :amount
(when (= :mount action)
(do)))
(defcomp comp-a [text]
[(effect-a text) (div {})])
Define a hooks plugin, like components it has caching support:
(defplugin plugin-x [a b]
{:ui (div {} (<> "Demo"))
:show (fn []
(do))})
Read docs to use Respo:
Test
yarn compile-test
node target/test.js
Develop
Calcit Workflow https://github.com/mvc-works/calcit-workflow
License
MIT
Related Skills
node-connect
329.0kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
81.1kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
329.0kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
81.1kCommit, push, and open a PR
