Enlive中的变量HTML模板

时间:2013-05-14 15:28:27

标签: clojure enlive

我正在尝试找到一种'Enlivonic'方法来定义一个函数,该函数将对参数化的html模板执行转换。

换句话说,我如何定义像defsnippet这样的东西,也将模板作为参数?

我看着,片段和转换,但我在宏中迷失了一点: - (

1 个答案:

答案 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