3

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

换句话说,我如何定义类似 defsnippet 的东西,它也将模板作为参数?

我看了看,片段和转换,但我对宏有点迷失:-(

4

1 回答 1

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

于 2013-07-16T08:38:01.310 回答