gpt4 book ai didi

haskell - 在 yesod (haskell) 中,如何加载纯 html 格式的文件(不是 hamlet)作为小部件?

转载 作者:行者123 更新时间:2023-12-02 21:32:47 29 4
gpt4 key购买 nike

如何将纯 html 格式的文件(不是 hamlet 格式的文件)加载为小部件?换句话说,我正在寻找相当于以下内容的 html:

toWidget $(whamletFile "test.hamlet")

最佳答案

为此,您可以在处理函数中使用 sendFile ( see its definition )

第一个参数是 Mime 类型,第二个参数是文件路径。

例如,您可以编写如下代码:

getMyFileR :: Handler ()
getMyFileR = sendFile "text/html" "myfile.html"

这是另一个例子。假设我有以下模型:

Resource
filename FilePath
mimetype ContentType

deriving Typeable

处理程序可能如下所示:

resourceDirectory :: FilePath
resourceDirectory = "resource"

getResourceGetR :: ResourceId -> Handler ()
getResourceGetR resourceId = do
resource <- runDB $ get404 resourceId

sendFile (resourceMimetype resource)
(resourceDirectory </> unpack (resourceFilename resource))

编辑2015-06-05

sendFile 在低级别运行,而 addScript$(widgetFile …) 在较高级别运行。

$(widgetFile …) 在项目编译之前使用 TemplateHaskell 将 Hamlet/Cassius/Lucius/Julius 模板转换为实际的 Haskell 源代码。这同样适用于[hamlet|…|]

addScriptRoute一起使用,而sendFileFilePath一起使用。这意味着 addScript 将能够在编译时检测丢失的文件。 sendFile 将在运行时检测丢失的文件。

有一些工具可以将 Html 转换为 Hamlet:

Html 文件的 addScript 等效项没有意义:addScript 将生成一个 script 标记来告诉浏览器下载外部文件资源。这不适用于 Html 文件。

关于haskell - 在 yesod (haskell) 中,如何加载纯 html 格式的文件(不是 hamlet)作为小部件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30449386/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com