Ich baue eine einfache Anwendung mit Yesod und ich habe es schwer, externe Dateien zu bringen. Hier ist mein Code:hamletFile, luciusFile, juliusFile Variablen nicht im Bereich
{-# 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
Es funktioniert großartig, wenn ich quasiquotes verwenden, oder wenn ich hamletFile
mit whamletFile
ersetzen, aber sonst wird es nicht kompilieren, weil es nicht hamletFile
oder luciusFile
finden. Ich benutze Jessod Version 1.4 und ich dachte, dass diese Methoden mit dem Core-Yesod-Paket importiert wurden. Sind sie nicht?
Kann ich 'hamletFile' verwenden, um externe' .lucius' Dateien zu importieren? Ich hatte den Eindruck, dass es nur mit '.hamlet' Dateien funktionieren würde. Ich habe mit Text.Hamlet importiert. –
Sie können 'hamletFile' nicht zum Importieren von Lucius-Dateien verwenden, aber Sie können die' widgetFile'-Funktion verwenden, die alle 3 Dateien von damlet, lucius und cassius importiert. – Ben
Aber 'widgetFile' ist nicht in der Core-yesod-Bibliothek enthalten, oder? Ich müsste yesod-scaffold zu meiner Abhängigkeitsliste hinzufügen, was wie ein Overkill aussieht, wenn man bedenkt, dass das die einzige Funktion ist, die ich verwenden werde. –