繁体   English   中英

如何在带有Heist的多个接头中使用单个按请求计算?

[英]How to use a single per-request computation in multiple splices with Heist?

假设我有一个带有两个自定义标签<x/><y/> Heist模板。 每个标签都绑定到Heist.Compiled.Splice 现在,将在每个GET请求中针对特定路线呈现模板。 如何用对的第一个值替换<x/> ,用同一对的第二个值替换<y/> ,但是返回该对的IO计算每个请求只能运行一次(并运行仅在该路由上,而不是在每条路由上,因为有些根本不会使用模板)?

您的问题与已编译的拼接教程中的Person示例非常相似。 您需要创建一个父接头,它将执行共享计算。 称其为computeXY 您的模板如下所示:

<computeXY>
  <p>The first value is <x/>.</p>
  <p>The second value is <y/>.</p>
</computeXY>

computeXY接头将执行计算,并使用runChildrenWith模式将其计算结果作为<x/><y/>标记提供给其子代。 但是,runChildrenWith模式在编译后的拼接处的工作方式略有不同。 这是使用编写本教程以来添加的新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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM