clojure/script 将宏扩展为 'do' 块内的多个“def”

clojure/script expanding a macro into multiple 'def's inside a 'do' block

不确定问题是否有效,但我正在学习宏并且我正在尝试编写一个宏(用于 clojurescript 但应该是同一件事)所以我可以在节点中做得更好 js/require。

语法如下所示:

(import ["some-module" :as module1]
        ["some-other-module" :as module2])

它将扩展为:

(do 
   (def module1 (js/require "some-module")
   (def module2 (js/require "some-module"))

我的问题是:

可以在 do 块中执行 'def' 吗? cljs 似乎没有抱怨,但从宏观设计的角度来看是否可以?

是的,使用 (do (def ...) (def ...)) 模式通常是在宏展开中 def 多个事物的唯一方法。