clojure と clojurescript を使用して RIA を開発しています。バックエンドはhiccupを使用して、次のような結果のhtmlを生成します
(html5
[:head
(include-js "/js/my-cljs-generated.js")]
[:body ... ])
結果のhtml内で、つまりajax呼び出しを行わずに、edn(ハッシュマップ、ベクターなど)をclojurescriptに渡すにはどうすればよいですか?
hiccup に次のようなことをさせたい:
(include-edn
"var_name" {:foo :bar}) ; or any other clojure data
cljsから渡されたednに何らかの方法で(たとえば名前で)アクセスできるようにします。
現在、私の実装は少しハックで、edn をグローバル js var に格納しています。
(hiccup/javascript-tag (str "var edn = \""
(pr-str my-clojure-data) "\";"))
そしてcljs側ではsmthのようにします
(jayq/document-ready
(fn []
(if-let [edn (.-edn js/window)]
(do-something-with (cljs.reader/read-string edn))
)
...
)
たぶん、これを達成するためのより慣用的な方法がありますか?