1

R: 1

このSOポストに記載されているように、それらは相互に排他的ではありません

これは、このより一般的なSO 投稿に関連する特定の質問です。

ただし、コントローラーはユーザーからのすべての呼び出しをルーティングすることを想定しています。これを行うには、要素を初期化し ( addEventListener を設定)、モデルを呼び出すようにします。

例:(私のコントロールオブジェクトから)

signin_input.addEventListener( "keypress", function( event )
{ 
    if( event.keyCode === 13 )
    {
        new ModelType( 'signin' ).invoke();
        return false; 
    }

}, false );

しかし、私のサイトが成長するにつれて、コントローラーが大きくなっています。

私ができることの1つは、初期化をそれぞれのモジュールに移動することです。たとえば、私のサインイン ロジックは ModelType というオブジェクトにあります。初期化はオブジェクト Control で行われます。

Control のサイズを小さくするには、初期化を ModelSignIn に移動します。

または、コントローラー オブジェクトを複数のオブジェクト (ControlPage1、ControlPage2 など) に分割することもできます。

どの方法が最適か、それとも他の方法が最適か?

初期化を相関オブジェクトに移動する利点の 1 つは、オブジェクトが自己完結型になり、他のアプリケーションにコピー ペーストできることです。欠点は、これが MVC パターンを壊しているように見えることです。

4

1 に答える 1

1

数日経ちましたが、誰も答えを出してくれなかったので、試してみます。JavaScript で MVC パターンを使用しようとしたことはありませんが、PHP で使用したことがあるので、フレームワークでも機能する可能性があります。

私が PHP で設計した MVC では、htaccess を使用してすべての php ファイルをインデックス経由でルーティングします。インデックスはデフォルトのコントローラー (基本的なコントローラー フレームワーク) をロードし、要求されたファイル名を使用して、サブコントローラー (存在する場合と存在しない場合があります) があるかどうかを確認します。デフォルトの特定の機能または属性をオーバーライドします)。

コントローラーは、デフォルトのモデルとビュー (および要求されたページに関連するサブモデル/サブビュー) を読み込みます。

メインコントローラーが雑然としないようにする方法としてこれを使用します。おそらくこれは真の MVC パターンではないかもしれませんが、過去 5 年ほどの間、私にはよく役立ってきました。

ここに画像の説明を入力

于 2012-05-22T15:05:19.377 に答える