私は clojure と Web 開発スタックが初めてです。enlive を使用して HTML テンプレートに値を設定しようとしています:
(en/deftemplate project-main-page
(en/xml-resource "project-main.html")
[id]
[:#project-name] (en/content (str "Name: " ((get-project id) :name)))
[:#project-desc] (en/content (str "Desc: " ((get-project id) :desc))))
これは、2 つの HTML 要素を設定するのに問題なく機能しますが、関数を繰り返し呼び出す必要がありますget-project
。現時点では、これはローカル マップから読み取るだけですが、最終的には外部ストレージへのアクセスが必要になるため、この関数で 1 回だけ実行することをお勧めします。
私は使用することを考えていましたlet
:
(en/deftemplate project-main-page
(en/xml-resource "project-main.html")
[id]
(let [project (get-project id)]
[:#project-name] (en/content (str "Name: " (project :name)))
[:#project-desc] (en/content (str "Desc: " (project :desc)))))
ただし、これは description 要素にのみ影響し、name フォームは無視されます。
内でローカル変数をバインドする最良の方法は何deftemplate
ですか?