hamletFile、luciusFile、juliusFile 变量不在范围内
hamletFile, luciusFile, juliusFile variables not in scope
我正在使用 Yesod 构建一个简单的应用程序,但我很难引入外部文件。这是我的代码:
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeFamilies #-}
import Yesod
data GomokuServer = GomokuServer
mkYesod "GomokuServer" [parseRoutes|
/ HomeR GET
|]
instance Yesod GomokuServer
getHomeR :: Handler Html
getHomeR = defaultLayout $ do
$(hamletFile "./src/templates/home.hamlet")
$(luciusFile "./src/templates/home.lucius")
main :: IO ()
main = warp 3000 GomokuServer
当我使用准引号,或者如果我用 whamletFile
替换 hamletFile
时,它工作得很好,但否则它不会编译,因为它找不到 hamletFile
或 luciusFile
。我使用的是 Yesod 1.4 版,我认为这些方法是与核心 Yesod 包一起导入的。不是吗?
为什么不直接使用 whamletFile
?大多数时候你需要一个小部件。
好像hamletFile
没有再导出
λ import Yesod
λ :t hamletFile
<interactive>:1:1: error:
• Variable not in scope: hamletFile
• Perhaps you meant ‘whamletFile’ (imported from Yesod)
如果你真的需要它,你可以从Text.Hamlet带进来。
FWIW Yesod scaffolding 定义了一个函数
widgetFile :: String -> Q Exp
widgetFile = (if appReloadTemplates compileTimeAppSettings
then widgetFileReload
else widgetFileNoReload)
widgetFileSettings
然后我就在任何地方使用它,比如 $(Settings.widgetFile "homepage")
,它默认为 "homepage" 引入 hamlet、lucius 和 cassius 文件。您可以在 Overriding-widgetFile on the Yesod wiki
查看更多信息
我正在使用 Yesod 构建一个简单的应用程序,但我很难引入外部文件。这是我的代码:
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeFamilies #-}
import Yesod
data GomokuServer = GomokuServer
mkYesod "GomokuServer" [parseRoutes|
/ HomeR GET
|]
instance Yesod GomokuServer
getHomeR :: Handler Html
getHomeR = defaultLayout $ do
$(hamletFile "./src/templates/home.hamlet")
$(luciusFile "./src/templates/home.lucius")
main :: IO ()
main = warp 3000 GomokuServer
当我使用准引号,或者如果我用 whamletFile
替换 hamletFile
时,它工作得很好,但否则它不会编译,因为它找不到 hamletFile
或 luciusFile
。我使用的是 Yesod 1.4 版,我认为这些方法是与核心 Yesod 包一起导入的。不是吗?
为什么不直接使用 whamletFile
?大多数时候你需要一个小部件。
好像hamletFile
没有再导出
λ import Yesod
λ :t hamletFile
<interactive>:1:1: error:
• Variable not in scope: hamletFile
• Perhaps you meant ‘whamletFile’ (imported from Yesod)
如果你真的需要它,你可以从Text.Hamlet带进来。
FWIW Yesod scaffolding 定义了一个函数
widgetFile :: String -> Q Exp
widgetFile = (if appReloadTemplates compileTimeAppSettings
then widgetFileReload
else widgetFileNoReload)
widgetFileSettings
然后我就在任何地方使用它,比如 $(Settings.widgetFile "homepage")
,它默认为 "homepage" 引入 hamlet、lucius 和 cassius 文件。您可以在 Overriding-widgetFile on the Yesod wiki