A front-end MVC library


Keywords
clojurescript, dom, mvc, respo, virtual-dom
License
MIT

Documentation

Respo

A front-end MVC library in ClojureScript.

This project is inspired by:

  • React
  • Reagent
  • Deku

Usage

Respo

[respo "0.3.35"]
(require '[respo.core :refer [render!]])

(defonce store-ref (atom 0))
(defonce states-ref (atom {}))

(defn dispatch! [op op-data]
  (reset! store-ref (updater @store-ref op op-data)))

(defn render-app! []
  (let [target (.querySelector js/document "#app")]
    (render! (comp-container @store-ref) target dispatch! states-ref)))

(render-app!)

Component Definition

(ns respo.comp.space
  (:require [respo.alias :refer [create-comp div]]))

(defn style-space [w h]
  (if (some? w)
    {:width w, :display "inline-block", :height "1px"}
    {:width "1px", :display "inline-block", :height h}))

(defn render [w h] (fn [state mutate!] (div {:style (style-space w h)})))

(def comp-space (create-comp :space render))

mutate! is previously set-state but changed a lot. Now you have to define init-state and update-state in every component.

Develop

Workflow https://github.com/mvc-works/stack-workflow

boot dev!
# open target/dev.html

Edit code with Stack Editor http://repo.cirru.org/stack-editor

To test static HTML rendering:

boot watch-test

Clojure code can be compiled from stack-sepal.ir to src/ by:

boot generate-code

To compile the whole project:

boot build-advanced

License

MIT