2 つのカスタム タグ<x/>
と<y/>
. 各タグは にバインドされていHeist.Compiled.Splice
ます。これで、テンプレートはGET
特定のルートのリクエストごとにレンダリングされます。<x/>
ペアの最初の値に置き換え、同じペアの 2 番目の値に置き換える方法はあり<y/>
ますが、ペアを返す IO 計算は要求ごとに 1 回だけ実行されます (すべてではなく、そのルートでのみ実行されます)。テンプレートをまったく使用しない人もいるからです)?
質問する
101 次
1 に答える
1
あなたの質問は、コンパイルされた splices tutorialの Person の例と非常によく似ています。共有計算を実行する親スプライスを作成する必要があります。それを呼び出しますcomputeXY
。テンプレートは次のようになります。
<computeXY>
<p>The first value is <x/>.</p>
<p>The second value is <y/>.</p>
</computeXY>
computeXY
スプライスは計算を実行し、runChildrenWith パターンを使用して、その計算の結果をその子として<x/>
および<y/>
タグで使用できるようにします。ただし、runChildrenWith パターンは、コンパイルされた splice では少し異なる動作をします。チュートリアルが書かれてから追加された新しい API 関数を使用して実装する方法は次のとおりです。
import Blaze.ByteString.Builder.Char8 (fromText)
import Heist.Compiled
runtimeTupleComputation = return ("foo", "bar")
splices = [ ("x", fromText . fst)
, ("y", fromText . snd)
]
computeXYSplice = withPureSplices runChildren splices runtimeTupleComputation
于 2013-03-13T14:47:20.583 に答える