现在有什么样的html模板/布局库?

时间:2016-04-16 04:53:19

标签: html haskell

我有一个Servant应用程序,我想添加一些具有共享主/布局页面的html页面。我应该使用什么html模板库来创建它?我已经看过一些但是没有找到一个是:

  1. 或多或少最新

  2. 使用外部html文件而不是在haskell代码中描述html布局。这意味着,我不想使用这样的东西

     getHomeR = defaultLayout
        [whamlet|
            <h1>Welcome to the homepage
            <p>
                Feel free to visit the #
                <a href=@{SubsiteR SubHomeR}>subsite
                \ as well.
        |]
    
  3. 可以轻松插入我的Servant应用程序。但不仅是一个Servant应用程序,以后我可能在其他框架中有Web应用程序,所以我也希望使用那个库。

1 个答案:

答案 0 :(得分:1)

Hamlet支持使用外部html模板文件。使用Servant的示例工作代码:

data Person = Person { firstName :: String, lastName :: String }
            deriving (Show, Eq, Generic)

instance ToJSON Person

instance ToMarkup [Person] where
  toMarkup persons = showPersons persons

  preEscapedToMarkup p = showPersons p

people :: [Person]
people =
  [ Person "Isaac"  "Newton"
  , Person "Albert" "Einstein"
  ]

showPersons :: [Person] -> Html
showPersons p = $(shamletFile "person.hamlet")

type PersonAPI = "persons" :> Get '[HTML] [Person]

-- HTML serialization of a list of persons

personAPI :: Proxy PersonAPI
personAPI = Proxy

server :: Server PersonAPI
server = return people

app :: Application
app = serve personAPI server

serveApp :: IO ()
serveApp = run 8081 app

注意函数shamletFile。模板文件person.hamlet中的代码:

<body>
    <p>Profile List page
     $forall person <- p
      <h1>#{firstName person}

包含完整导入和ghc扩展名的整个代码here