我是 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))))
这可以很好地设置我的两个 HTML 元素,但它涉及对我的函数的重复调用get-project
。目前这只是从本地地图读取,但最终会涉及一些外部存储访问,所以我宁愿只在这个函数中执行一次。
我正在考虑使用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)))))
但这只会影响描述元素并忽略名称形式。
绑定本地变量的最佳方法是什么deftemplate
?