6

我想使用 ClojureScript 制作“单页”风格的网络应用程序。为此,我需要一个客户端模板系统。有人对我应该研究哪些 ClojureScript 模板系统有任何经验和/或建议吗?谢谢。

4

6 回答 6

5

你可以看看dommy,一个由 Prismatic 编写/使用的模板系统。

于 2013-01-24T13:32:47.157 回答
3

我发现crate很有帮助。

于 2013-01-04T16:58:39.543 回答
2

在使用过 Crate 和 Dommy 之后,我可以说它们都非常好。Crate 只是从 Clojure 转换为 Clojurescript 用于模板的 Hiccup 的实现,因此您仍然需要使用 Domina 来选择元素。如果您想要一个同时处理 DOM 选择和模板的框架,请使用 Dommy

于 2013-06-16T16:59:34.957 回答
2

我知道 Clojurescript 的三种模板风格:

  1. Dommy:直接从 cljs 代码创建和操作 DOM 节点。
  2. Crate:声明和操作 cljs 数据(向量、地图等),然后将其转换为 DOM 节点。
  3. Enfocus:在 HTML 文件中编写 HTML,处理它们并从 cljs 转换它们。它是一种不同的模板思维方式,它基于 clj 库 Enlive。

有一些库可以生成 React DOM 节点而不是普通的 DOM 节点,但它们的工作方式与上面提到的相同:

  1. 任何 Cljs React 包装器,例如 Om 或 Reagent
  2. 萨布洛诺
  3. 基欧

我知道你只是要求模板,而 React 提供的不止这些,但如果你需要除了最基本的操作之外的任何东西,我会推荐任何基于 React 的方法。

于 2014-12-12T20:51:43.493 回答
1

因为到目前为止还没有提到:我真的很喜欢Hoplon。它结合了以下工具集:

  • 自定义 HTML 元素是常规函数,可以使用HLisp创建和组合功能。
  • 带有Javelin ClojureScript 库的类似电子表格的数据流。使用单元格和公式直观地模拟反应行为。
  • 使用Castra Clojure 和 ClojureScript 库与服务器交互。在服务器上定义函数,从客户端调用它们。

您可以将其用作全栈解决方案,也可以仅在客户端使用它。给你一个印象(取自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")))
于 2016-08-19T08:41:41.360 回答
0

除了您已经收到的答案之外,我建议您查看基于React的系统,例如OmReagentQuiescent。在这三个中,我个人最喜欢的是 Reagent,但其中任何一个都是对传统 DOM 操作恕我直言的改进。

于 2014-12-13T11:39:08.583 回答