【问题标题】:Using Licius + Hamlet + Julius in Servant在仆人中使用李修斯 + 哈姆雷特 + 朱利叶斯
【发布时间】:2016-04-15 14:38:36
【问题描述】:

我想使用 Yesod 中的莎士比亚模板(Licius + Hamlet + Julius)。但我对此有一些困难。来自enter link description here 的以下代码有效:

type TestAPI 
    = "tests" :> Get '[JSON] [Test]
    :<|> "test" :> Get '[JSON] Test
    :<|> "TestHTML.html" :> Get '[HTML] Page_TestHTML 

serverTestAPI :: ServerT TestAPI AppM
serverTestAPI = tests 
           :<|> test
           :<|> testHtml

data Page_TestHTML = Page_TestHTML

instance ToMarkup Page_TestHTML where
    toMarkup Page_TestHTML = builderHtml  

testHtml = return Page_TestHTML

builderHtml = [shamlet|
                $doctype 5
                <html>
                    <head>
                        <title>Greeting2
                <body>
                    <h2> Hello world HTML Qqqqq |]

但下一个代码不起作用:

data Page_TestHTML_2 = Page_TestHTML_2

instance ToMarkup Page_TestHTML_2 where
    toMarkup Page_TestHTML_2 = builderHtml_2

testHtml_2 = return Page_TestHTML_2

builderHtml_2 = do 
    $(luciusFile "templates/test/TestHTML2.lucius")
    $(shamletFile "templates/test/TestHTML2.hamlet")

我如何为仆人构建 Licius + Hamlet + Julius(没有整个 Yesod)?

【问题讨论】:

  • 你能添加你得到的编译器错误吗?
  • 错误:无法将预期类型 't0 -> Css' 与实际类型 'blaze-markup-0.7.0.3:Text.Blaze.Internal.MarkupM a0' 匹配 lambda 表达式 '\ _render_alwD - > (shakespeare-2.0.8:Text.Css.CssNoWhitespace . (foldr ($) ...)) ...'
  • 人们什么时候会知道省略类型签名不是一个好主意?
  • 嗯,不需要类型签名的事实是 Haskell 的一个卖点。所以难怪人们会使用这个“功能”
  • @mb14 也许卖家应该在他的small print中添加“只要你不动手”;)

标签: haskell yesod hamlet servant


【解决方案1】:

我能够解决这个问题。 以下代码有效!

data Page_LoginHTML = Page_LoginHTML

instance H.ToMarkup Page_LoginHTML where
    toMarkup Page_LoginHTML = builderHtml  

loginHtml = return Page_LoginHTML

cssStyle :: Html 
cssStyle = toHtml $ renderCssUrl undefined 
    [cassius|
        .q-test-2 
            color: green
    |]

htmlBody :: Html 
htmlBody =   
    [shamlet|
        <h1> Hamlet Login Render
    |]

builderHtml = H.docTypeHtml $ do
    H.head $ do
        H.title "Login"
        H.style cssStyle
    H.body htmlBody

也许它对某人有用。

【讨论】:

    猜你喜欢
    • 2016-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多