我正在使用 clojure 和 clojurescript 开发 RIA。后端使用打嗝来生成结果 html,比如
(html5
[:head
(include-js "/js/my-cljs-generated.js")]
[:body ... ])
如何在生成的 html 中将 edn(hashmap、vector 等) 传递给 clojurescript,即不进行 ajax 调用?
我想让打嗝做这样的事情:
(include-edn
"var_name" {:foo :bar}) ; or any other clojure data
并且能够以某种方式(例如通过名称)从 cljs 访问传递的 edn。
目前我的实现有点hacky并将edn存储在全局js var中
(hiccup/javascript-tag (str "var edn = \""
(pr-str my-clojure-data) "\";"))
并且在 cljs 方面确实喜欢
(jayq/document-ready
(fn []
(if-let [edn (.-edn js/window)]
(do-something-with (cljs.reader/read-string edn))
)
...
)
也许有更惯用的方式来实现这一目标?