4

(ColdFusionに関連する)標準のMVCアプローチは、ビューファイルを.cfmにし、最終的にビューを処理するcfc内でCFINCLUDEを実行することのようです。

これはcfcのオブジェクト指向を壊しますか?

これにより、CFMLコンパイラは毎回ビューをコンパイルする必要がありますか?

GetContentメソッドを使用してビューファイル自体をcfcにしない強い理由はありますか?

4

4 に答える 4

6

これは cfc のオブジェクト指向を壊しますか?

このあいまいな CFC の「オブジェクト指向」を達成することは、一種の主観的なものです。「すべてがオブジェクトでなければならない」と自分自身を強制すると、余分なオーバーヘッドが発生する CF を使用することを余儀なくされます。アプリが高速で効率的であることを確認するために、妥協はほとんど必要ありません。「オブジェクト指向」という定義できない目標を達成することについて心配する必要はありません。CFC の再利用や変更のカプセル化など、より明確な目標を立てます。ビューをオブジェクトにしようとしても、必ずしもこれらの目標を達成するのに役立つとは限りません。ビューはそれぞれ異なり、おそらく再利用できないからです。

これにより、CFML コンパイラは毎回ビューをコンパイルする必要がありますか?

Cfm もコンパイルおよびキャッシュされます。タブで構成される大きなフォームがいくつかありました。各タブは個別の cfm ファイルです。最初のロードでは、コンパイルと表示に数秒かかります。後続のロードでは、タブ付きビューが生成され、即座に表示されます。同じことがcfcsでも起こります。

ビュー ファイル自体を GetContent メソッドで CFC にしない強い理由はありますか?

私は少し前に、学習体験のためだけに独自のフレームワークを実装しようとしましたが、cfinclude アプローチに行き着きました。私が覚えている限りでは、cfinclude を使用すると物事がより適切にカプセル化され、オブジェクトの作成、ビューに必要な引数の受け渡し、オブジェクトが適切なスコープ内にあるかどうかの心配、およびビュー オブジェクトの作成による余分なオーバーヘッドの煩わしさを回避できることがわかりました。

結局のところ、これは、自分の状況に最適なアプローチを見つけるために自分で試してみる必要があることの 1 つだと思います。

于 2009-12-11T17:54:31.653 に答える
4

MVC の実装に関心がある場合は、これらの決定を既に行っているさまざまな CFML フレームワークを調べてください。

ColdBox、ColdFusion on Wheels、Mach-II、または Model-Glu を試してください。または、少なくともソースコードを見て、それがどのように処理されているかを確認してください。:)

于 2009-12-11T12:48:36.207 に答える
1

誰かが提案したからといって、パターンや方法論にやみくもに従わないでください。あなたのサイトが持っているニーズを見て、あなた自身の好みに注意を払い、他の誰かが将来的にコードを維持することに目を向けてください.

具体的には、CFC を使用して DB との対話をカプセル化します。モデル コードからビュー コードを分離することは非常に良い考えであるため、私は MVC パターンに従います。CFC が真の OO ルールに従っているかどうかはそれほど重要ではありません。

ビューレイヤーの冗長性を減らすために、多くの場所で cfincludes を使用しています。

カスタム フレームワークを使用してパターンのコントローラー部分を実装し(コントローラーを作成しました)、よりスマートになり、MachII、Fusebox、および Model Glue を使用しました。これらの各フレームワークは、CFC のビューなどの使用をサポート/奨励しています。または、それぞれが優れた設計と関心の分離をサポートしていると言えます。

適切なパターンを見つけて、自分に合ったものを決定し、実装して文書化します。

于 2011-12-15T18:42:01.940 に答える
0

CFInclude は、CFM に直接結合することで、CFC の移植性をさらに制限しません。

于 2009-12-11T16:54:47.147 に答える