如何在 Yesod 中导入莎士比亚模板?
How to import Shakespearean Templates in Yesod?
我在 Yesod 中使用 QuasiQuotations,一切正常。但是我的文件变得非常大而且不好看。此外,我的 TextEditor 没有正确突出显示此语法。这就是为什么要像这样拆分我的文件:
getHomeR :: Handler Html
getHomeR = do
webSockets chatApp
defaultLayout $ do
$(luciusFile "templates/chat.lucius")
$(juliusFile "templates/chat.julius")
$(hamletFile "templates/chat.hamlet")
如有不妥,请指出。执行 runghc myFile.hs
会抛出很多这样的错误:
chat_new.hs:115:9:
Couldn't match expected type ‘t0 -> Css’
with actual type ‘WidgetT App IO a0’
The lambda expression ‘\ _render_ajFK
-> (shakespeare-2.0.7:Text.Css.CssNoWhitespace . (foldr ($) ...))
...’
has one argument,
but its type ‘WidgetT App IO a0’ has none
In a stmt of a 'do' block:
\ _render_ajFK
...
还有这个。
chat_new.hs:116:9:
Couldn't match type ‘(url0 -> [(Text, Text)] -> Text)
-> Javascript’
with ‘WidgetT App IO a1’
Expected type: WidgetT App IO a1
Actual type: JavascriptUrl url0
Probable cause: ‘asJavascriptUrl’ is applied to too few arguments
...
还有一个 HTML(哈姆雷特)。
因此,每个模板一个。
似乎 hamletFile
和其他人将模板视为独立的,而您的模板则相互引用某些内容。您可以玩 *File
调用的顺序,或使用 Yesod.Default.Util
模块中的 widgetFile*
:
$(widgetFileNoReload def "chat")
Reload
变体对开发很有用 - 它会让 yesod devel
监视文件更改并重新加载它们。
我在 Yesod 中使用 QuasiQuotations,一切正常。但是我的文件变得非常大而且不好看。此外,我的 TextEditor 没有正确突出显示此语法。这就是为什么要像这样拆分我的文件:
getHomeR :: Handler Html
getHomeR = do
webSockets chatApp
defaultLayout $ do
$(luciusFile "templates/chat.lucius")
$(juliusFile "templates/chat.julius")
$(hamletFile "templates/chat.hamlet")
如有不妥,请指出。执行 runghc myFile.hs
会抛出很多这样的错误:
chat_new.hs:115:9:
Couldn't match expected type ‘t0 -> Css’
with actual type ‘WidgetT App IO a0’
The lambda expression ‘\ _render_ajFK
-> (shakespeare-2.0.7:Text.Css.CssNoWhitespace . (foldr ($) ...))
...’
has one argument,
but its type ‘WidgetT App IO a0’ has none
In a stmt of a 'do' block:
\ _render_ajFK
...
还有这个。
chat_new.hs:116:9:
Couldn't match type ‘(url0 -> [(Text, Text)] -> Text)
-> Javascript’
with ‘WidgetT App IO a1’
Expected type: WidgetT App IO a1
Actual type: JavascriptUrl url0
Probable cause: ‘asJavascriptUrl’ is applied to too few arguments
...
还有一个 HTML(哈姆雷特)。
因此,每个模板一个。
似乎 hamletFile
和其他人将模板视为独立的,而您的模板则相互引用某些内容。您可以玩 *File
调用的顺序,或使用 Yesod.Default.Util
模块中的 widgetFile*
:
$(widgetFileNoReload def "chat")
Reload
变体对开发很有用 - 它会让 yesod devel
监视文件更改并重新加载它们。