2

私たちは長い間ExtJを使用してきましたが、MVCパターンの出現により、これまでのアプローチを考えると、今後使用するかどうかという重大な問題に直面しています。

私たちのアプリケーションでは、レポートを生成するための40の同様の画面など、同様の画面があります。これらのレポート画面には、ボタン付きのフォーム(PDF、CSV、EXCEL)があります。すべてのボタンは、すべての画面で同じ機能を備えています。つまり、フォームをURLに送信して、特定のレポートを生成します。

私たちが従ったアプローチは、ExtJのウィンドウクラスを拡張するカスタムクラス、たとえばreportscreenクラスを作成することでした。

このカスタムレポート画面クラスには、ハンドラーが定義されたボタンが既にあり(すべての画面で機能が類似しているという事実を前提として)、関数setFormItems()を備えたフォームもあります。このクラスのインスタンスは、setFormItems()とレポートを生成するためのURLを使用してフォームのアイテムを提供します。

このアプローチは、開発の労力を大幅に削減するだけでなく、チームの新しいメンバーでもクラスを使用して新しい画面を作成するのに役立ちます。

現在、最も推奨されるパターンであるMVCが提供されており、上記で共有されているアプローチは、MVCパターンによるものではありません。しかし、それでは、ここで本当にMVCパターンに移行する必要がありますか?

上記のアプローチを使用すると、労力を節約できるだけでなく、物事をより細かく制御できます。

この質問をする目的は、MVCパターンを使用して上記のシナリオを実装し、現在のアプローチから離れた場合に得られる正確な利点について知ることです。

したがって、上記のコンテキストでは、MVCはどのような追加の機能をテーブルにもたらしますか?また、MVCパターンでそのようなものを実装するための最良の方法は何でしょうか?

よろしくお願いします。

4

2 に答える 2

6

MVC を使用する必要がありますか? いいえ。うまく機能する構造が既にあると仮定して、壊れていない場合は修正しないでください。新しいプロジェクトを開始する場合は、MVC を使用することをお勧めしますが、そのために大量のコードをリファクタリングすることはしません。MVC を使用した場合は、同様のアプローチに従います。サブクラスのアイテムを動的にプッシュする基本ビュー クラスがあります。すべてのカスタム イベントを処理するベース コントローラーがあり、次にサブクラス コントローラーを使用して、"モジュールごと" にカスタム機能を実装します。

于 2013-03-19T20:35:56.713 に答える
4

MVC を使用したことがない人に、MVC を使用する利点を説明するのは困難です。ExtJs 3 と 4 (MVC を使用) の両方で開発した者として、MVC の最大の利点の 1 つは、MVC の最大の利点の 1 つは、正しいことを考えなければならないことだと思います。より再利用可能で、より適切にカプセル化されています。しかし、あなたの男の子と女の子が優れたプログラマー/デザイナーであれば、いずれにせよそうなるでしょう。

MVC に移行することを選択した場合、主な変更点は、カスタム クラス内でユーザー インタラクションを処理する代わりに、単一のコントローラーで同じジョブを実行できるようになることです。ビューを実現するためにカスタム クラスを残します。それだけ。ExtJs4 のコントローラーはグローバルです。つまり、同じコントローラーが 40 個の同様のビューを制御できます。したがって、ここではコントローラーの重複はありません。

MVC 設計内であっても、MVC 以外のコードが見つかることに注意してください。たとえば、フォームであるカスタム レコード エディターがあります。コンポーネントは、ユーザー アクションを処理し、それに応じてレコードを更新する方法を認識しています (フォームは主に関連付けを処理するため、送信されません)。このコンポーネントは、MVC 設計内でコントローラーとビューの両方の同等の役割を果たします。これをビューとコントローラーに分割するのではなく、このようにカプセル化する方が合理的だと思います。ただし、(再利用できない) ユーザー画面は MVC を使用して実装されています。したがって、MVC を急がないもう 1 つの理由かもしれません。

もし私があなたの開発リーダーであり、時間とお金が問題にならないなら、私は実際に MVC への段階的な移行を要求するでしょう - 全体的に私は 3 年後だと思いますこの決定を後悔することはありません。私は少なくともそれを試みます。

ExtJs 4 が出たとき、私は MVC を使用してシステムをゼロから書き直すために 2 か月の作業をかき集めました。 4) の初期バージョン。

于 2013-03-19T22:19:33.967 に答える