Я использую скомпилированный Heist. Мои сращивания выполняются только во время работы (без нагрузки). У меня есть template.tpl
вроде этого:Передача данных непосредственно в шаблоны в скомпилированном Heist (Haskell)?
<html>
<head>
<title><titleSplice/></title>
</head>
<body>
<bodySplice/>
</body>
</html>
Это, как я делаю вещи:
- В рамках акции оснастки для
/:param
маршрута, я используюrenderTemplate heistState "template"
получитьMyHeistRuntimeMonad Builder
. - Я могу передать значение
:param
моему сращиванию, поместив его в мою монадию выполнения через ReaderT:type MyHeistRuntimeMonad = ReaderT String IO
. (Там, гдеString
для переданного в:param
значении.)
И это моя проблема. Единственный способ передать данные с моих маршрутов на мои сращивания - через монашескую временную монаду. Это усложняет ситуацию. Мои вопросы:
- Нет ли альтернативы
renderTemplate
, что позволяет мне передавать данные непосредственно в шаблон? Например, примерно так:renderTemplate' "template" [("titleSplice", "myTitle"), ("bodySplice", "myBody")]
. - Если это невозможно, почему бы и нет? Мне просто интересно, почему все было спроектировано так, как они были. Я не совсем понимаю.
Ничего себе. Я не полностью понял это, но это очень помогает. Кажется, существует какая-то реальная, глубокая философия, стоящая за тем, как работает Heist (и Snap). Если бы кто-нибудь написал книгу об этом! – haskellHQ