我无法理解如何使用 Sinatra 与 MVC 一起实现 Presenter 模式。
我已经阅读了很多帖子,但没有一个真正专注于我感兴趣的特定用例。
为了清楚起见,我已经在使用“Sinatra Up and Running”中定义的 MVC 模式(请参阅:https ://github.com/Integralist/sinatra-mvc/ -> 自从我最初创建这个 repo 以来,我的代码已经改变但它会让您了解我正在使用的 MVC 结构)。
我想要达到的目标......
我对 Presenter 的理解是整理 Model 数据,然后将其传递给 View。然后将其传递回控制器,然后控制器再渲染视图。
我想使用 Presenter 模式的原因不仅是为了保持控制器的清洁,而且还能够组成一个由“组件”(HTML 块)组成的页面,这样我就可以在不同的页面上重用一些组件。
如何实施?
但我不确定如何实现这一点。有人可以告诉我一个如何做到这一点的例子(如果编写一个真实的例子需要很多工作,伪代码就可以了)?
这是我设想的一些示例代码,但我不确定我的想法是否正确或实现将如何工作(我尝试了不同的方法,但由于我对如何理解缺乏了解而遇到了问题Sinatra 在幕后工作)...
class ContactController < ApplicationController
get '/' do
@component_a = require './presenter/a'
@component_b = require './presenter/b'
erb :contact
end
end
...我假设我的视图中仍然需要一些基本逻辑来确定页面中加载组件的位置,例如...
<%
if @component_a
erb :"#{@component_a}"
end
%>
所以这让我认为加载演示者可能应该返回一些允许这种情况发生的东西。
任何关于如何更好地做到这一点的建议也非常受欢迎。
谢谢!