1

在 ClojureScript/Om 应用程序中,我有一个 DOM 和一个 HTML 字符串。

如何将该 HTML 字符串转换为可以插入 DOM 的元素?

我已经开始使用 hickory 解析 HTML,计划然后处理 hickory 数据以创建 DOM 元素,但我认为必须有一种更简单的方法我忽略了。

(我不需要验证 HTML,我可以假设它足够安全和​​有效。)

4

2 回答 2

3

Aleš Roubíček 的回答要好得多。我会留下这个 un case 它可以帮助某人。

山核桃提供了一个as-hiccup功能。Hiccup使用 Clojure 数据结构来表示 HTML。您可以将这些数据结构提供给遵循相同约定的 Clojurescript 库:

  • 打嗝生成常规 DOM 元素。
  • Sablono生成 React DOM 元素并与 Om 一起使用。

您也可以使用Kioo / Enfocus,而不是传递文件路径,而是直接传递字符串。这会更直接,而不是使用两个库(Hickory + Sablono),您将只使用一个。需要注意的是,Kioo 和 Enfocus 遵循Enlive模板风格(这很好,但有一个学习曲线),并且文档专注于文件路径而不是字符串(即使可以传递字符串)。

于 2014-12-28T22:51:13.520 回答
3

您不需要解析 HTML 字符串。这是不必要的开销。React/Om 支持类似 DOM 的innerHTML属性。只需这样设置道具:

(om.dom/div #js {:dangerouslySetInnerHTML #js {:__html "<b>Bold!</b>"}} nil)

如果您使用没有 Om 的普通 DOM,请将innerHTML属性设置为:

(let [div (. js/document getElementById "elId")]
     (set! (. div -innerHTML) "<b>Bold!</b>"))
于 2014-12-29T06:46:53.520 回答