我正在尝试找到一种'Enlivonic'方法来定义一个函数,该函数将对参数化的html模板执行转换。
换句话说,我如何定义像defsnippet这样的东西,也将模板作为参数?
我看着,片段和转换,但我在宏中迷失了一点: - (
答案 0 :(得分:1)
如果您有转化,但想要提供不同的模板,您可以尝试:
(defn multi-template [t]
(template t [h1 h2]
[:h1] (content h1)
[:h2] (content h2)))
当使用html模板调用此函数时,将返回一个函数,该函数将h1和h2作为参数并将它们替换为给定模板。请按以下方式调用:
((multi-template "your-template.html") "heading 1 content" "heading 2 content")
当我将许多不同的图片库设计作为模板并希望动态切换时,我使用了类似的东西。
注意:这会每次动态创建模板,而deftemplate
宏只在编译时调用模板一次。因此,如果速度过慢,您可以采取一些措施来优化它(请参阅clojure, enlive, multi-site)