1

他のドメイン クラスを参照する多数のフィールドを持つドメイン クラスが与えられた場合、コントローラー内のフィールドにアクセスしてモデルに追加すること、またはビュー内のフィールドに直接アクセスすることがベスト プラクティスと見なされますか?

言い換えれば、小さなモデルは単純なビューよりも優れていますか、それともその逆ですか?

例えば:

// Controller
render(view: 'index', model: [b: a.b, c:a.b.c])

// View
${a}, ${c}, ${c.id}

対。

// Controller
render(view: 'index', model: [a: a])

// View
${a.b}, ${a.b.c}, ${a.b.c.id}

また、これらの代替手段は Grails / GORM でパフォーマンスに影響を与えますか?

4

1 に答える 1

1

使用方法の構成に完全に依存していると言えますが、一般的に、レンダリング呼び出しごとにモデル内のエントリ数を少なく保つようにしています。

a、ab、および abc の一部を表示する必要があるページの一部がある場合、それらを「a」への単一の参照として渡すことは問題ないようです。

表示しているページに異なる部分があり、あるセクションが a を参照し、別のセクションが ab を参照し、別のセクションが abc を参照している場合は、Templating ( http://www.slideshare.net/laelfrog/grails ) を調べることをお勧めします。 -layouts-sitemesh )、"a" をトップ セクションに渡し、そのトップレベル ページから "ab" を "b" として ab を使用するセクション テンプレートに渡します。

したがって、コントローラーが次の場合:

render( view: 'index', model: [a:a] )

index.gsp は次のようになります。

<g:render template="toplevel" model="[a: a]" />
<g:render template="midlevel" model="[b: a.b]" />
<g:render template="bottomlevel" model="[c: a.b.c]" />

次に、テンプレート _toplevel で "a" を使用できます (実際、このレベルでは、現在のモデルはコントローラーが送信したものと同じであるため、モデルを渡す必要はありません)。

しかし、_midlevel では、単に "b" として "ab" にアクセスでき、_bottomlevel では "c" として abc にアクセスできます。各テンプレートは、2 つのレンダー チェーンのモデルに依存するのではなく、必要なものを認識し、実際にはそれらのものに独自の名前を付ける必要があります。

最適化に関する限り、モデルを構築するために多くの作業を何度もやり直さない限り、それが問題になるとは思えません。子を逆参照するだけでは、実際には問題になりません。

于 2013-09-01T22:16:10.507 に答える