Compile ClojureScript in Clojure into a String

Thank you to all for the detailed answers! This was very helpful. I was searching a very light solution. The solutions like squint are still too heavy. My html files have only a very few lines of JavaScript. Mostly one-liners that set a variable to something or call something.

I decided now to write my own Clojure syntax for JavaScript, which is converted to a string by functions and a macro. In case someone is interested, I paste here my draft.

(defn js+ [a b]
  (concat ["("] a ["+"] b [")"]))

(defn js- [a b]
  (concat ["("] a ["-"] b [")"]))

(defn jsdef [from to]
  (concat from ["="] to [";"]))

(defn jsdefn [name arguments & body]
  (concat ["function "] name ["("] [(clojure.string/join "," arguments)] ["){"] (apply concat body) ["}"]))

(defn jscall [name & arguments]
  (concat name ["("] (clojure.string/join "," (apply concat arguments)) [")"]))

(defn into-js [code]
  (cond (number? code) [(str code)]
        (symbol? code) [(str code)]
        (vector? code) (apply concat (map into-js code))
        (list? code) (if (= (first code) 'clj)
                       [(second code)]
                       (let [js-operation (->> code first (str "js") symbol resolve)]
                         (apply js-operation (map into-js (rest code)))))
        :else :error))

(defmacro js [& code]
  (let [translate-statement (fn tranlate-statement [statement]
                              `(str ~@(into-js statement)))]
    `(str ~@(map translate-statement code))))

;; Example

(def b 15)

(js (defn my_func [x y]
      (def tmp (+ x (clj b)))
      (def store tmp))
    (call my_func 3 4))
; => "function my_func(x,y){tmp=(x+15);store=tmp;}my_func(3,4)"