Sto sviluppando RIA con clojure e clojurescript. Backend utilizza incidente di percorso per generare un HTML risultante, comeCome posso passare edn al clojurescript da clojure senza fare una richiesta jax (cioè tramite la pagina generata da hiccup)
(html5
[:head
(include-js "/js/my-cljs-generated.js")]
[:body ... ])
Come posso passare EDN (hashmap, vettore, ecc) per ClojureScript all'interno del codice HTML risultante, vale a dire senza fare chiamata AJAX?
vorrei fare singhiozzo fare qualcosa di simile: (. Per esempio in base al nome)
(include-edn
"var_name" {:foo :bar}) ; or any other clojure data
e di essere in grado di accedere al edn passato da cljs in qualche modo.
Attualmente la mia realizzazione è un po 'hacky e memorizza EDN in un js var globale
(hiccup/javascript-tag (str "var edn = \""
(pr-str my-clojure-data) "\";"))
e sul lato cljs fa smth come
(jayq/document-ready
(fn []
(if-let [edn (.-edn js/window)]
(do-something-with (cljs.reader/read-string edn))
)
...
)
Forse c'è modo più idiomatico per raggiungere tale obiettivo?
Non sarei d'accordo sul fatto che un approccio basato sulla spinta sia più idiomatico. per esempio, core.async tenta di ridurre al minimo l'inversione del controllo che viene normalmente introdotto dai callback. –