Skip to content

Instantly share code, notes, and snippets.

@jeans11

jeans11/app.cljs Secret

Created March 1, 2023 11:34
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jeans11/b0e5dbc68d2ac13623774c55aeac0aa5 to your computer and use it in GitHub Desktop.
Save jeans11/b0e5dbc68d2ac13623774c55aeac0aa5 to your computer and use it in GitHub Desktop.
Electric clojure
(ns ^:dev/always estimaty.web-ui.app
(:require
estimaty.web-ui.core
hyperfiddle.electric
hyperfiddle.electric-dom2))
(def electric-main
(hyperfiddle.electric/boot
(binding [hyperfiddle.electric-dom2/node js/document.body]
(estimaty.web-ui.core/App.))))
(defonce reactor nil)
(defn ^:dev/after-load ^:export start! []
(assert (nil? reactor) "reactor already running")
(set! reactor (electric-main
#(js/console.log "Reactor success:" %)
#(js/console.error "Reactor failure:" %))))
(defn ^:dev/before-load stop! []
(when reactor (reactor)) ; teardown
(set! reactor nil))
(ns estimaty.web-ui.core
(:require [hyperfiddle.electric :as e]
[hyperfiddle.electric-dom2 :as dom]
[hyperfiddle.history :as hr]))
(e/def foo)
(e/defn App []
(e/server
(binding [foo "Foo"]
(e/client
(dom/h1 (dom/text "foo"))))))
(ns dev.core
(:require
[dev.css-build :as css-build]
[estimaty.server-ui.core :as server]
shadow.cljs.devtools.api
shadow.cljs.devtools.server))
(defonce server nil)
(defn main
"Electric Clojure(JVM) REPL entrypoint"
[& _args]
(println "Starting CSS watcher")
(css-build/go)
(println "Starting Electric compiler and server...")
(shadow.cljs.devtools.server/start!) ; serves index.html as well
(shadow.cljs.devtools.api/watch :app) ; depends on shadow server
(alter-var-root #'server (constantly (server/start-electric-server!
{:public-path "bases/web-ui/resources/web-ui/public"})))
:idle)
(comment
;; Launch the app
(main)
(.stop server)
(shadow.cljs.devtools.server/stop!)
nil)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment