【发布时间】:2012-12-18 11:35:04
【问题描述】:
我想使用 ClojureScript 制作一个“单页”风格的 Web 应用程序。为此,我需要一个客户端模板系统。有人对我应该研究哪些 ClojureScript 模板系统有任何经验和/或建议吗?谢谢。
【问题讨论】:
标签: clojure clojurescript client-side-templating
我想使用 ClojureScript 制作一个“单页”风格的 Web 应用程序。为此,我需要一个客户端模板系统。有人对我应该研究哪些 ClojureScript 模板系统有任何经验和/或建议吗?谢谢。
【问题讨论】:
标签: clojure clojurescript client-side-templating
您可以看看dommy,这是一个由 Prismatic 编写/使用的模板系统。
【讨论】:
我发现 crate 很有帮助。
【讨论】:
使用过 Crate 和 Dommy,我可以说它们都非常好。 Crate 只是从 Clojure 转换为 Clojurescript 用于模板的 Hiccup 的实现,因此您仍然需要使用 Domina 来选择元素。如果您想要一个同时处理 DOM 选择和模板的框架,请使用 Dommy
【讨论】:
我知道 Clojurescript 的三种模板风格:
有些库可以生成 React DOM 节点而不是普通的 DOM 节点,但工作方式与上面提到的相同:
我知道你只是要求模板,而 React 提供的不止这些,但如果你需要除了最基本的操作之外的任何东西,我会推荐任何基于 React 的方法。
【讨论】:
由于到目前为止尚未提及:我真的很喜欢Hoplon。它结合了以下一组工具:
您可以将其用作全栈解决方案,也可以仅在客户端使用它。给你一个印象(取自GitHub):
(page "index.html")
(defn my-list [& items]
(div
:class "my-list"
(apply ul (map #(li (div :class "my-list-item" %)) items))))
(def clicks (cell 0))
(html
(head
(title "example page"))
(body
(h1 "Hello, Hoplon")
(my-list
(span "first thing")
(span "second thing"))
(p (text "You've clicked ~{clicks} times, so far."))
(button :click #(swap! clicks inc) "click me")))
【讨论】: