将 Monstrous JavaScript 代码转换为优雅的 Clojurescript 代码

Converting Monstrous JavaScript code to elegant Clojurescript code

我有这么糟糕的JavaScript代码

response.items[0].fields.image.fields.file.url

我可以将其转换为 ClojureScipt 映射,但要访问该字段,我将不得不输入可怕的不可读访问。 有没有办法做到既漂亮又优雅?

(-> (aget (.-items response) 0)
    (.. -fields -image -fields -file -url))

或者如果您已将其转换为 Clojure 数据结构:

(-> response :items first :fields :image :fields :file :url)

我推荐使用 cljs-oops 库。它支持嵌套 "selectors" 对象图,例如:

(oget o "k3.?k31.k311")
(oget o "k3" "?k31" :k311)
(oget o ["k3" "?k31" "k311"])
(oget o [["k3"] "?k31"] "k311")