首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在带有Heist的多个拼接中使用单个请求计算?

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

Stack Overflow用户
提问于 2013-03-13 06:13:10
回答 1查看 101关注 0票数 1

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-13 22:47:21

您的问题与compiled splices tutorial中的Person示例非常相似。您需要创建一个父拼接,它将执行共享计算。叫它computeXY吧。您的模板将如下所示:

代码语言:javascript
复制
<computeXY>
  <p>The first value is <x/>.</p>
  <p>The second value is <y/>.</p>
</computeXY>

computeXY拼接将执行计算,并使用runChildrenWith模式将计算结果作为<x/><y/>标记提供给它的子节点。但是,runChildrenWith模式与编译拼接的工作方式略有不同。下面是如何使用自本教程编写以来添加的新API函数来实现它:

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15373260

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档