This library seems to be very practicable for server based rendering. I don't know if it is still maintained. I think, I found a bug.
This example does not work correctly.
(let [world "World!"
world-as-fragment (js* (clj (str "Hello " world)))]
(js (console.log (clj world-as-fragment))))
It should generate the js code console.log("Hello World"). But it does not resolve the clj macro and yields console.log(clj(\"Hello \" + world)).