我使用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包括兩次
。
如果您包含一些代碼 - 或者您正在嘗試的示例,這將有助於人們回答您的問題 – ManseUK
您是否看過包含兩次小部件的實例?我的理解是,Yesod確保它只有一次。 –
@JeffFoster,我已經添加了純化示例 –