【问题标题】:Using html files as templates in happstack在 happstack 中使用 html 文件作为模板
【发布时间】:2011-06-23 10:50:05
【问题描述】:

我可以找到大量关于使用 blitz 和其他带有 happstack 的编译时模板库的文档,但我想知道如何将 html 文件用作模板。

【问题讨论】:

标签: haskell templating happstack


【解决方案1】:

虽然有很多选项,但我最喜欢的是Heist,它允许您定义splice

> factSplice :: (Monad m) => TemplateMonad m Template
> factSplice = do
>   input <- getParamNode
>   let text = T.unpack $ X.nodeText input
>       n    = read text :: Int
>   return [X.TextNode $ T.pack $ show $ product [1..n]]
>

可用于动态(在运行时加载)HTML 模板:

<html>
  <head>
    <title>Factorial Page</title>
  </head>
  <body>
    <h1>Factorial Page</h1>
    <p>The factorial of 6 is <fact>6</fact></p>
  </body>
</html>

要在happstack 中使用heist,您需要happstack-heist 包。有关更多详细信息和其他选项,请参阅Using Heist

【讨论】:

    【解决方案2】:

    HStringTemplate 包提供了一个非常通用的运行时模板系统,不仅适用于 HTML,而且适用于任何类型的文本输出:

    http://hackage.haskell.org/packages/archive/HStringTemplate/0.6.6/doc/html/Text-StringTemplate.html

    HStringTemplate 包通过可选包提供的一些额外实例很好地与 Happstack 集成:http://hackage.haskell.org/package/happstack-hstringtemplate

    【讨论】:

      猜你喜欢
      • 2012-10-12
      • 2016-04-16
      • 2012-04-23
      • 1970-01-01
      • 2019-01-11
      • 2021-06-02
      • 1970-01-01
      • 2021-01-10
      • 1970-01-01
      相关资源
      最近更新 更多