3

パラメータ化されたhtmlテンプレートで変換を実行する関数を定義する「Enlivonic」の方法を見つけようとしています。

つまり、引数としてテンプレートも取る 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マクロはコンパイル時にテンプレートを 1 回呼び出すだけです。したがって、これが遅すぎる場合は、最適化するためにできることがあります ( clojure、enlive、multi-siteを参照) 。

于 2013-07-16T08:38:01.310 に答える