1

像Yesod一样,如此深入。有一个问题:使用 Yesod 我可以打电话给例如。App带有Warp( warp 3000 App) 的数据类型。如何提供使用莎士比亚模板创建的 HTML(如下所示)。从迈克尔斯诺伊曼的书中得到这个。

{-# LANGUAGE OverloadedStrings         #-}
{-# LANGUAGE TypeFamilies              #-}
{-# LANGUAGE QuasiQuotes               #-}
{-# LANGUAGE TemplateHaskell           #-}
module Main where

import Text.Blaze.Html.Renderer.String (renderHtml) 
import Text.Hamlet (HtmlUrl, hamlet) 
import Data.Text (Text) 
import Yesod

data WebRoutes = Home | Time | Stylesheet

render :: WebRoutes -> [(Text, Text)] -> Text 
render Home _       = "/home"
render Time _       = "/time" 
render Stylesheet _ = "/stylesheet" 

template :: Text -> HtmlUrl WebRoutes 
template title = [hamlet|
<html>
  <head> 
    <title>#{varTitle} 
    <link rel=stylesheet href=@{Stylesheet}>
  <body>
    <h1 #headerId>#{title}
|]
varTitle :: String 
varTitle = "Test outputd" 

main :: IO ()
main = putStrLn $ renderHtml $ template "Test output" render
4

0 回答 0