我的任务是了解所有关于Yesod的知识,我(有点)被困在路由系统上,它与子网站和交叉路线连接的关系。我想要讨论的第一件事是在路由定义和哈姆雷特链接中发现的"ResourceR“模式。
我注意到“类型”本身(ResourceR)从未在Yesod的TH之外被寻址或引用,这是否意味着它实际上只是作为一个虚拟类型使用,仅仅是为了利用Haskell的类型安全性来引用Yesod链接?我还注意到,函数getResourceR、postResourceR等是应用程序工作的至关重要的,但是在样板应用程序代码中使用它们的定义并不明确。Yesod是否简单地将对@{ResourceR}的调用减少到适当的函数?
我一直觉得自己应该将ResourceR定义为数据类型,而实际上它是由Yesod在内部生成和简化的。
因此,我的问题是:在哈姆雷特和路由代码中引用的“资源类型”是否由Yesod的DSL自动生成和减少?
提前谢谢你!
发布于 2013-11-18 21:57:43
Yesod确实扩展了它在路由文件中看到的内容(或者您在准引号部分中键入的parseRoutes函数),并给服务器适当命名的get或post函数(在资源名称后面加上"get“或"post”)。您所需要做的就是创建get/post函数,框架将使用这些路由为您调用该函数。您只需要指定路径和请求类型。
将所有路径信息集中在一个位置可以使您很容易调试单个请求的去向(想想替代的意大利面代码会是什么样子)。强制命名标准也使您的代码可以理解,代码生成消除了一些重复(例如,它帮助您坚持干原理)。
https://stackoverflow.com/questions/20037393
复制相似问题