Snaplet中的静态文件

时间:2014-10-23 18:01:04

标签: haskell haskell-snap-framework heist

我想从Snap框架中的Snaplet提供一些静态文件。我怎么做?文档不完全清楚。

我知道如何添加路线和东西,但我遇到两个问题:

  1. 我需要传递给serveDirectory以便从snaplet目录提供文件吗?
  2. 如何在snaplet的Heist模板中引用这些静态文件?我显然不能使用绝对URL,因为我不知道我的snaplet最终安装在最终应用程序中的URL前缀。换句话说,如何在Heist模板中获取相对于snaplet根URL的URL?

1 个答案:

答案 0 :(得分:2)

是的,serveDirectory是用于提供静态文件的内容。你可能有这样的路线:

route [("static", serveDirectory "myDir"), ...]

在模板中引用这些文件时,必须使用您指定的路径。因此,如果您有一个文件myDir/foo.js,那么在模板中,您可以使用/static/foo.js来引用它。

如果您不了解您的snaplet的基本网址,则可以使用getSnapletRootURL功能获取该网址。然后,您可以使用Heist拼接在模板中使用它。