我正在使用带有脚手架站点的 yesod 0.9.3。有什么方法可以将某些小部件仅包含在结果页面中一次(或者,最好使某些小部件仅包含一次),就像addScript
这样addStylesheet
做?我可以在页面处理程序中调用这样的(依赖)小部件,但这打破了(依赖)小部件作为一个独立实体的整个想法,您只需在需要时调用它。
例子:
addCommonStyle :: Widget
addCommonStyle = toWidgetHead [lucius|.some-class {background: yellow}|]
styledP :: Text -> Widget
styledP t = do
addCommonStyle
[whamlet|<p .some-class>#{t}|]
getTestR :: Handler RepHtml
getTestR = defaultLayout $ do
styledP "First paragraph"
styledP "Second paragraph"
这导致 HTML 带有指向样式表的链接,其中包含
.some-class{background:yellow}.some-class{background:yellow}
也就是说, addCommonStyle 包含两次。