1

ClojureScript/Om アプリには、DOM と HTML の文字列があります。

HTML の文字列を、DOM に挿入できる要素に変換するにはどうすればよいでしょうか?

私はヒッコリーで HTML を解析する道を歩み始め、ヒッコリー データを処理して DOM 要素を作成することを計画していますが、見落としているもっと簡単な方法があるに違いないと思います。

(HTML を検証する必要はありません。安全で十分有効であると想定できます。)

4

2 に答える 2

3

Aleš Roubíček の回答ははるかに優れています。誰かに役立つ場合は、これを残します。

ヒッコリーはas-hiccup機能を提供します。Hiccupは Clojure データ構造を使用して HTML を表現します。これらのデータ構造を、同じ規則に従う Clojurescript ライブラリにフィードできます。

  • 通常のDOM要素を生成するための問題。
  • React DOM 要素を生成し、Om で使用するためのSablono 。

Kioo / Enfocusを使用して、ファイル パスを渡す代わりに文字列を直接渡すこともできます。これはより直接的で、2 つのライブラリ (Hickory + Sablono) を使用する代わりに、1 つだけを使用します。注意点として、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 に答える