Использование HTML-файлов в качестве шаблонов в happstack
Я могу найти много документации по использованию Blitz и других библиотек шаблонов времени компиляции с happstack, но я хотел бы знать, как использовать HTML-файлы в качестве шаблонов.
2 ответа
Хотя есть много вариантов, мой любимый будет Heist
, который позволит вам определить splice
:
> factSplice :: (Monad m) => TemplateMonad m Template
> factSplice = do
> input <- getParamNode
> let text = T.unpack $ X.nodeText input
> n = read text :: Int
> return [X.TextNode $ T.pack $ show $ product [1..n]]
>
который может быть использован в динамическом режиме (загружается во время выполнения) HTML
шаблон:
<html>
<head>
<title>Factorial Page</title>
</head>
<body>
<h1>Factorial Page</h1>
<p>The factorial of 6 is <fact>6</fact></p>
</body>
</html>
Использовать heist
в happstack
Вам понадобится пакет " Хейстстак-Хейст". Для более подробной информации и других опций смотрите Использование Heist.
Пакет HStringTemplate предоставляет очень общую систему шаблонов во время выполнения не только для HTML, но и для любого вида текстового вывода:
http://hackage.haskell.org/packages/archive/HStringTemplate/0.6.6/doc/html/Text-StringTemplate.html
Пакет HStringTemplate прекрасно интегрируется с Happstack через несколько дополнительных экземпляров, предоставляемых необязательным пакетом: http://hackage.haskell.org/package/happstack-hstringtemplate