haskell 如何使用编译的Heist将编译的拼接粘贴到标记中

ubby3x7f  于 9个月前  发布在  其他
关注(0)|答案(1)|浏览(81)

我创建了一个示例仓库here
我们的想法是有一个最小的例子,使用Haskell模板系统Heist没有Snap,并使用其较新的编译Heist功能。
示例存储库不包括服务器,但代码最终将在服务器环境中使用。因此,我想做以下事情:
1.在服务器启动时预编译我的拼接
1.执行一个数据库调用,为REST路由加载给定视图的所有数据(想想GET /users)
1.将预编译的拼接应用于数据并将其粘贴到模板中
对于示例存储库,步骤1发生在main的开始;步骤2用简单的阅读器monad代替;第三步是在main的底部发生的。
这是最后一点(3)我正在努力。最后,我将使用Heist状态和模板的名称调用C.renderTemplate。这个模板里面有一个标签,目前称为apply-content(有点混乱,因为这是来自于interpeted Heist,但我想这不重要)。此apply-content标记将被每个路由替换为不同的内容。为了示例存储库的目的,我想使用body.tpl,它有一个body-greeting标记,并用它替换index.tpl中的apply-content
我现在唯一的想法是在调用renderTemplate之前修改编译的拼接列表。但我在教程中没有找到任何这样的例子,在GitHub上也没有。所以我倾向于相信这不是它应该如何工作。

g52tjvyc

g52tjvyc1#

这个问题的答案出奇的简单。
在编译模式下,您可以,也应该,
如果我们将body.tpl替换为:

<apply template="index">
  <p><body-greeting /></p>
</apply>

并更改main.hs,使其调用C.renderTemplate heistState "body"而不是"index",我们得到所需的输出:在运行时生成的问候语,插入到body模板中,该模板插入到index模板中。
您可以看到此commit中的更改

相关问题