gpt4 book ai didi

haskell - 使用 hamlet 渲染静态 HTML

转载 作者:行者123 更新时间:2023-12-02 18:28:09 24 4
gpt4 key购买 nike

如何使用 hamlet从 Haskell 内部生成静态 HTML 页面的框架?

注意:这个问题故意不表现出研究成果。对于我的研究工作,请参阅下面的问答式答案。

最佳答案

hamlet 产生计算结果为 blaze 的 QuasiQuoters表达式。使用Text.Blaze.Html.Renderer.String.renderHtml您可以将它们呈现为字符串。

让我们从一个简单的非 HTML 示例开始:

{-# LANGUAGE QuasiQuotes #-}
import Text.Blaze.Html.Renderer.String (renderHtml)
import Text.Hamlet

greet name = [shamlet|Hello world #{name}|]
-- This prints "Hello world John Foo"
main = putStrLn $ renderHtml $ greet "John Foo"

为了提高效率,您还可以使用 Text 代替 String Text.Blaze.Html.Renderer.Text.renderHtml

将其写入文件与标准 Haskell 方法没有什么不同。例如,您可以使用 writeFile 而不是 putStrLn 来执行此操作。只需要修改最后一行即可

main = do writeFile "greet.txt" $ renderHtml $ greet "John Foo"

现在我们只需要添加 HTML 标记,而不是使用纯文本。请参阅the Shakespeare documentation以供进一步引用。

{-# LANGUAGE QuasiQuotes #-}
import Text.Blaze.Html.Renderer.String (renderHtml)
import Text.Hamlet

greet name = [shamlet|
$doctype 5
<html>
<head>
<title>Greeting for #{name}
<body>
<h2>
Hello world #{name}|]

main = writeFile "greet.html" $ renderHtml $ greet "John Foo"

greet.html 现在包含静态呈现的问候语 HTML。

关于haskell - 使用 hamlet 渲染静态 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21313534/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com