【问题标题】:Rendering static HTML with hamlet使用 hamlet 渲染静态 HTML
【发布时间】:2014-02-14 07:37:11
【问题描述】:

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

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

【问题讨论】:

    标签: haskell hamlet static-html


    【解决方案1】:

    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。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-06
      • 2017-12-16
      • 2015-05-09
      • 1970-01-01
      • 1970-01-01
      • 2017-06-20
      • 1970-01-01
      • 2020-06-27
      相关资源
      最近更新 更多