0

我的任务是了解有关 Yesod 的所有信息,但我(有点)卡在路由系统上,它与子站点和跨路由链接有关。我想首先说明的是在ResourceR整个路由定义和 Hamlet 链接中发现的“”模式。

我注意到“类型”本身 ( ResourceR) 从未在 Yesod 的 TH DSL 之外解决或引用。这是否意味着它仅真正用作虚拟类型,仅用于在引用 Yesod 链接时利用 Haskell 的类型安全性?我还注意到,函数getResourceRpostResourceR对于应用程序的工作至关重要,但它们的定义在样板应用程序代码中的使用位置并不明确。Yesod 是否只是减少对@{ResourceR}适当函数的调用?

我一直觉得我应该将ResourceR自己定义为一种数据类型,而实际上它是由 Yesod 在内部生成和减少的。

所以我的问题是:在 Hamlet 和 Route 代码中引用的“资源类型”是否会被 Yesod 的 DSL 自动生成和减少?

先感谢您!

4

1 回答 1

1

Yesod 确实扩展了它在路由文件中看到的内容(或者您在 quasiquotes 部分的 parseRoutes 函数中键入的内容),并为服务器提供了适当命名的 get 或 post 函数(通过在资源中添加前缀“get”或“post”姓名)。您需要做的就是创建 get/post 函数,框架将使用路由为您调用该函数。您只需要指定路径和请求类型。

像这样将所有路径信息集中在一个位置使您可以轻松地调试单个请求的去向(想想替代意大利面条代码的样子)。强制命名标准还使您的代码易于理解,并且代码生成消除了一些重复(即,它可以帮助您遵守干原则)。

于 2013-11-18T21:57:43.037 回答