Визуализация шаблона деревушки из файла
Предполагая, что у меня есть следующее shakespeare
код шаблона:
$doctype 5
<html>
<body>
<h2>This is a test
<div>Value of test variable: #{testVariable}
в файле mytemplate.hamlet
,
Как я могу сделать это используя shamletFile
без явного вставления шаблона в исходный код?
Примечание. На этот вопрос был дан немедленный ответ в стиле Q&A, и поэтому он намеренно не требует каких-либо исследований.
1 ответ
См. Этот предыдущий вопрос для получения информации о том, как, почему, чтобы сделать hamlet
шаблоны как статические файлы.
Единственное существенное отличие состоит в том, что вам нужно использовать шаблон Haskell's $(...)
оператор для оценки Q Exp
что дает shamletFile
, Вот полный пример, который предполагает ваш mytemplate.hamlet
находится в том же каталоге, что и ваш файл на Haskell:
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TemplateHaskell #-}
import Text.Blaze.Html.Renderer.String (renderHtml)
import Text.Blaze.Html
import Text.Hamlet
-- | The main template
renderTemplate :: String -> String
renderTemplate testVariable = renderHtml ( $(shamletFile "mypage.hamlet") )
main = do
putStrLn $ renderTemplate "foobar"
При выполнении он печатает:
<!DOCTYPE html>
<html><body><h2>This is a test</h2>
<div>Value of test variable: foobar</div>
</body>
</html>
Обратите внимание, что в вашем приложении вам может понадобиться shamletFile
, xshamletFile
, hamletFile
или же ihamletFile
, См. Документацию Hackage и книгу Yesod по шаблонам Шекспира для получения информации о том, когда использовать любой из них.