yesodweb-输出中的示例和额外标记 请考虑以下三个非常相似的页面。 {-# LANGUAGE OverloadedStrings, TypeFamilies, QuasiQuotes, TemplateHaskell, MultiParamTypeClasses #-} import Yesod import Control.Applicative import Data.Text (Text) import Text.Hamlet data Example = Example mkYesod "Example" [parseRoutes| / RootR GET /page PageR GET /page2 Page2R GET |] instance Yesod Example getRootR :: GHandler sub Example RepHtml getRootR = do defaultLayout [whamlet| $doctype 5 <html> <head> <title>Tutorial, hello root <body> <h1 id="greeting">Hello root |] getPageR :: GHandler sub Example RepHtml getPageR = defaultLayout $ do toWidgetHead [hamlet| <meta charset="utf-8"> |] setTitle "hello page" toWidget [hamlet| <h1 id="greetings2">Hello page |] getPage2R :: GHandler sub Example RepHtml getPage2R = defaultLayout $ do toWidget [hamlet| $doctype 5 <html> <head> <title>Tutorial, hello page2 <body> <h1 id="greeting">Hello page2 |] main :: IO () main = warpDebug 3000 Example {-#语言重载字符串、类型族、准字符串、, TemplateHaskell,MultiParamTypeClasses#-} 进口紫草 导入控制 导入数据。文本(Text) 导入文本。哈姆雷特 数据示例=示例 mkYesod“示例”[parseRoutes]| /RootR-GET /寻呼机获取 /第2页第2页获取 |] 实例YesD示例 getRootR::GHandler子示例RepHtml getRootR=do 默认布局[whamlet]| $doctype 5 教程,你好,root 根你好 |] getPageR::GHandler子示例RepHtml getPageR=defaultLayout$do 托维吉特海德[哈姆雷特] setTitle“你好页面” 托维吉特[哈姆雷特]| 你好,佩奇 |] getPage2R::GHandler子示例RepHtml getPage2R=defaultLayout$do 托维吉特[哈姆雷特]| $doctype 5 教程,你好,第2页 你好,第2页 |] main::IO() main=3000示例

yesodweb-输出中的示例和额外标记 请考虑以下三个非常相似的页面。 {-# LANGUAGE OverloadedStrings, TypeFamilies, QuasiQuotes, TemplateHaskell, MultiParamTypeClasses #-} import Yesod import Control.Applicative import Data.Text (Text) import Text.Hamlet data Example = Example mkYesod "Example" [parseRoutes| / RootR GET /page PageR GET /page2 Page2R GET |] instance Yesod Example getRootR :: GHandler sub Example RepHtml getRootR = do defaultLayout [whamlet| $doctype 5 <html> <head> <title>Tutorial, hello root <body> <h1 id="greeting">Hello root |] getPageR :: GHandler sub Example RepHtml getPageR = defaultLayout $ do toWidgetHead [hamlet| <meta charset="utf-8"> |] setTitle "hello page" toWidget [hamlet| <h1 id="greetings2">Hello page |] getPage2R :: GHandler sub Example RepHtml getPage2R = defaultLayout $ do toWidget [hamlet| $doctype 5 <html> <head> <title>Tutorial, hello page2 <body> <h1 id="greeting">Hello page2 |] main :: IO () main = warpDebug 3000 Example {-#语言重载字符串、类型族、准字符串、, TemplateHaskell,MultiParamTypeClasses#-} 进口紫草 导入控制 导入数据。文本(Text) 导入文本。哈姆雷特 数据示例=示例 mkYesod“示例”[parseRoutes]| /RootR-GET /寻呼机获取 /第2页第2页获取 |] 实例YesD示例 getRootR::GHandler子示例RepHtml getRootR=do 默认布局[whamlet]| $doctype 5 教程,你好,root 根你好 |] getPageR::GHandler子示例RepHtml getPageR=defaultLayout$do 托维吉特海德[哈姆雷特] setTitle“你好页面” 托维吉特[哈姆雷特]| 你好,佩奇 |] getPage2R::GHandler子示例RepHtml getPage2R=defaultLayout$do 托维吉特[哈姆雷特]| $doctype 5 教程,你好,第2页 你好,第2页 |] main::IO() main=3000示例,haskell,yesod,Haskell,Yesod,RootR和page2提供相同的输出(我指的是标记和结构),而“page”与这两个有点不同。输出为第一个“根”和“第2页”: 教程,你好,第2页 你好,第2页 而“页面”的输出是 你好,佩奇 你好,佩奇 为什么在“root”和“page2”中有额外的&-标记?我应该在代码中添加一些内容还是删除一些内容 谢谢你的帮助 默认布局函数已包含doctype等。。。您将再次在root和page2中添加它。谢谢!我从书中选取了一个示例,但我没有立即看到该示例使用了其他函数(WidgetOpageCo

RootR和page2提供相同的输出(我指的是标记和结构),而“page”与这两个有点不同。输出为第一个“根”和“第2页”:


教程,你好,第2页
你好,第2页
而“页面”的输出是


你好,佩奇
你好,佩奇
为什么在“root”和“page2”中有额外的&-标记?我应该在代码中添加一些内容还是删除一些内容


谢谢你的帮助

默认布局函数已包含
doctype
等。。。您将再次在root和page2中添加它。

谢谢!我从书中选取了一个示例,但我没有立即看到该示例使用了其他函数(WidgetOpageContent)。我将把它和“初学者部分”一起添加到YesSOD wiki中,看看其他人是否愿意在学习时分享他们的“案例”。应该有HamleteToRepHTML而不是WidgetOpageContent
<!DOCTYPE html>
<html><head><title></title></head><body><!DOCTYPE html>
<html><head><title>Tutorial, hello page2</title>
</head>
<body><h1 id="greeting">Hello page2</h1>
</body>
</html>
</body></html>
<!DOCTYPE html>
<html><head><title>hello page</title><meta charset="utf-8"> </meta>
</head><body><h1 id="greetings2">Hello page</h1>
</body></html>