haskell - 在 Snap 中生成 Html 列表

标签 haskell haskell-snap-framework

我想通过构建一些 HTML 并将其绑定(bind)到用于 Heist 模板的标签来集成 Snap 的模板和 Blaze HTML 构建器。这是我尝试过的。

numbers :: Int -> Splice AppHandler
numbers n = return $ [TextNode $ T.concat.toChunks.renderHtml $ do
                    p "A list of natural numbers"
                    ul $ forM_ [1 .. n] (li .toHtml)]

这不能按预期工作,因为 snap 将 HTML 字符串直接渲染到生成的页面。如何快速渲染 blaze 生成的 HTML?

最佳答案

如果您想坚持使用 Heist 拼接,请使用 xmlhtmlText.Blaze.Renderer.XmlHtml 模块中的 renderHtmlNodes 函数在这种情况下,包应该会有很大帮助。

文档:http://hackage.haskell.org/packages/archive/xmlhtml/0.1.5.2/doc/html/Text-Blaze-Renderer-XmlHtml.html

我不完全理解你的例子,但我将如何修改它以纳入我的建议:

numbers :: Int -> Splice AppHandler
numbers n = return $ renderHtmlNodes $ do
                    p "A list of natural numbers"
                    ul $ forM_ [1 .. n] (li .toHtml)

关于haskell - 在 Snap 中生成 Html 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8582696/

相关文章:

haskell - `NS` 类型的大小写匹配

haskell - 为什么这个 Haskell 类型的强制转换不能编译?

generics - 什么是参数多态函数?

haskell - 简化 Haskell 代码

javascript - 如何在整个 Web 应用程序堆栈中利用 Haskell 类型安全?

检查四叉树水平对称性的算法?

类似于 Haskells 循环的 Ruby 方法

haskell - 比较 Haskell 的 Snap 和 Yesod Web 框架

haskell - 捕捉 : compiled splices code example

html - CSS scroll-snap 是如何指定的,它在 firefox 上不起作用