Как загрузить обычный файл в формате html (не файл в формате hamlet) в качестве виджета? Другими словами, я ищу html-эквивалент:
toWidget $(whamletFile "test.hamlet")
Как загрузить обычный файл в формате html (не файл в формате hamlet) в качестве виджета? Другими словами, я ищу html-эквивалент:
toWidget $(whamletFile "test.hamlet")
Для этого вы используете sendFile
в своей функции-обработчике (см. его определение)
Первый аргумент — это тип Mime, а второй — путь к файлу.
Например, вы можете написать что-то вроде:
getMyFileR :: Handler ()
getMyFileR = sendFile "text/html" "myfile.html"
Вот еще один пример. Скажем, у меня есть следующая модель:
Resource
filename FilePath
mimetype ContentType
deriving Typeable
Обработчик может выглядеть так:
resourceDirectory :: FilePath
resourceDirectory = "resource"
getResourceGetR :: ResourceId -> Handler ()
getResourceGetR resourceId = do
resource <- runDB $ get404 resourceId
sendFile (resourceMimetype resource)
(resourceDirectory </> unpack (resourceFilename resource))
Редактировать 2015-06-05
sendFile
работает на низком уровне, а addScript
или $(widgetFile …)
работает на более высоком уровне.
$(widgetFile …)
использует TemplateHaskell для преобразования ваших шаблонов Hamlet/Cassius/Lucius/Julius в фактический исходный код Haskell перед компиляцией вашего проекта. То же самое относится и к [hamlet|…|]
.
addScript
работает с Route
, а sendFile
работает с FilePath
. Это означает, что addScript
сможет обнаруживать отсутствующие файлы во время компиляции. sendFile
обнаружит отсутствующие файлы во время выполнения.
Есть несколько инструментов для преобразования Html в Hamlet:
Эквивалент addScript
для файлов Html не имеет смысла: addScript
создаст тег script
, сообщающий браузеру о загрузке внешнего ресурса. Это не относится к файлу HTML.
addScript
, который можно вызвать для ресурса для загрузки именованного внешнего ресурса julius. Что эквивалентно addScript
для простого html-ресурса?
- person daj; 26.05.2015