Sinatra を使用して MVC と一緒に Presenter パターンを実装する方法がわかりません。
私はたくさんの投稿を読みましたが、興味のある特定のユースケースに焦点を当てたものはありません.
明確にするために、「Sinatra Up and Running」で定義されている MVC パターンを既に使用しています (参照: https://github.com/Integralist/sinatra-mvc/ -> このリポジトリを最初に作成してからコードが変更されました)しかし、それは私が使用している MVC 構造のアイデアを提供します)。
私が達成しようとしていること...
プレゼンターについての私の理解は、モデル データを照合してからビューに渡すことです。次に、ビューをレンダリングするコントローラーにそれを渡します。
私がプレゼンター パターンを使用したい理由は、コントローラーをきれいに保つだけでなく、「コンポーネント」(HTML のチャンク) で構成されるページを構成できるようにすることで、別のページでいくつかのコンポーネントを再利用できるようにするためです。
実装方法は?
しかし、これを実装する方法がわかりません。これを行う方法の例を教えてください(実際の例を書くのが大変な場合は、疑似コードで問題ありません)。
これが私がどのように見えるかを示すサンプルコードですが、私が考えていることが正しいかどうか、または実装がどのように機能するかはわかりません(さまざまなことを試しましたが、方法の理解が不足しているため問題が発生しましたシナトラはカバーの下で働いています)...
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
%>
したがって、プレゼンターをロードすると、それを可能にする何かが返されるはずだと思います。
これを改善する方法についての提案も大歓迎です。
ありがとう!