Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 快照0.9路由行为_Haskell_Haskell Snap Framework - Fatal编程技术网

Haskell 快照0.9路由行为

Haskell 快照0.9路由行为,haskell,haskell-snap-framework,Haskell,Haskell Snap Framework,我无法理解Snap 0.9(很可能还有其他版本)中的路由奇怪之处 我理解“/”是一种捕获一切的模式,除非我将ifTop函数放在处理程序中,对吗? 所以,对于(“/”,blah)路由,任何URL都应该由blah处理程序处理,对吗 使用snap init生成的默认应用程序,我无法让snap为根请求呈现index.tpl以外的任何内容 给定根(“/”,blah)和处理程序 blah :: Handler App App () blah = render "blah" 除了根URL之外,它为任何URL

我无法理解Snap 0.9(很可能还有其他版本)中的路由奇怪之处

我理解“/”是一种捕获一切的模式,除非我将ifTop函数放在处理程序中,对吗? 所以,对于(“/”,blah)路由,任何URL都应该由blah处理程序处理,对吗

使用snap init生成的默认应用程序,我无法让snap为根请求呈现index.tpl以外的任何内容

给定根(“/”,blah)和处理程序

blah :: Handler App App ()
blah = render "blah"
除了根URL之外,它为任何URL呈现blah模板! 所以“/anything”呈现乏味的模板,而“/”呈现索引模板

将blah处理程序更改为

blah = ifTop $ render "blah"
不会改变任何行为。 只有在这种情况下,我不能路由到“/任何东西”。路由到“/”仍然呈现索引模板。 我错过了什么?如何获取“/”来呈现我选择的模板?

如果您有“index.tpl”模板,那么它将用于呈现根页面。问题在于heistInit功能:

heistInit :: FilePath                 -- ^ Path to templates
          -> SnapletInit b (Heist b)
heistInit templateDir = do
    makeSnaplet "heist" "" Nothing $ do
        hs <- heistInitWorker templateDir defaultHeistState
        addRoutes [ ("", heistServe) ]
        return hs
heistInit::文件路径--^模板路径
->斯内普莱尼特b(抢劫b)
heistInit templateDir=do
makeSnaplet“heist”“没什么用”

谢谢。我认为索引模板的存在使它成为根的默认值。我对你关于匹配任何东西的说法感到困惑。。。如果我有(“/”,blah)根,那么一切都由blah函数处理,不包括任何其他定义的根。给定上述根,我可以将任意随机字符串附加到“/”中,并将其转发给blah函数。对此有何评论?现在,“”带有这个路由条目(“,serveDirectory“static”)。那么“/”和“/”有什么区别呢?我刚试过。您的回答是对的,“/”和“/”是相同的。我从答案中删除了关于“”的陈述。