2009-12-11 29 views
4

看起來標準的MVC接口(與ColdFusion相關)似乎是製作視圖文件.cfm並在最終處理視圖的cfc內部執行CFINCLUDE。我應該在CFC中使用CFINCLUDE還是CFSAVECONTENT

這是否打破了cfc的目標取向?

這是否會導致CFML編譯器必須每次編譯視圖?

是否有強烈的理由不使視圖文件自己cfc與GetContent方法?

回答

6

這是否打破了cfc的面向對象方向 ?

實現cfcs的這種模糊的「對象取向」是一種主觀的。強迫自己陷入「一切都必須是對象」,這會迫使你用CF來做事情,這會造成額外的開銷。我需要小小的妥協來確保應用程序的快速和高效。不要擔心實現「面向對象」的一些不可確定的目標。制定一個更明確的目標,例如實現cfcs的重用或封裝更改。試圖將對象視爲對象並不一定能幫助你實現這些目標,因爲每個視圖都是不同的,可能不可重用。

這是否會導致CFML編譯器 已編譯的看法每次?

Cfms也被編譯和緩存。我有幾個大表單組成的標籤,其中每個標籤是一個單獨的cfm文件。在第一次加載時,它們需要幾秒鐘來編譯和顯示。在隨後的加載中,標籤視圖會立即生成並顯示。 cfcs也是如此。

是否有一個強有力的理由不使 視圖文件本身CFC的使用 的getContent方法?

我以前曾試圖實現我自己的框架只是爲了學習經驗,我最終採用了cfinclude方法。從我記憶中,我發現使用cfinclude更好地封裝了事物,避免了創建對象的麻煩,繞過視圖所需的參數,擔心對象位於正確的範圍內,並避免了創建視圖對象的額外開銷。

最後,儘管如此,我想這是你必須嘗試找出最適合你的情況的方法之一。

4

如果您有興趣實現MVC,您應該查看已經爲您做出這些決定的各種CFML框架。

試試ColdBox,ColdFusion車輪,Mach-II或Model-Glue。或者至少看看他們的源代碼,看看他們如何處理它。 :)

+0

肖恩Cornfeld的框架1 http://fw1.riaforge.org/看起來很有趣也 – kevink

+0

我正在尋找更多的爲什麼框架方面做出了他們做出,而不是他們做什麼決定的決定。 –

+0

Gotcha。我沒有任何直接的經驗,但我聽說不適合大型網站。不知道推理是什麼,但我隱約記得它來自可靠的人。這樣做,你會。 ;) –

0

不會CFInclude通過將CFC可移植性直接耦合到CFM來更多地綁定您的CFC可移植性。

+1

某種程度的耦合正在發生。使用cfinclude是一種成熟的設計模式。 – jamesTheProgrammer

1

不要盲目地遵循某種模式或方法,而只是因爲某人提出了這個模式或方法。看看你的網站的需求,並注意你自己的偏好,並注意別人維護代碼。

具體而言,我使用CFC的封裝與DB的相互作用。我遵循MVC模式,因爲從模型代碼中分離視圖代碼是一個非常好的主意,CFC是否遵循真正的OO規則並不重要。

我用cfincludes在很多地方,以減少在我看來層redundency。

我已經實現使用自定義的框架我的圖案的控制器部分(I創建的控制器),則變得更聰明和使用MachII,保險絲盒和模型膠。這些框架中的每一個都支持/鼓勵使用CFC的觀點等,或者更好地聲明每個支持良好的設計和關注點分離。

找到好的模式,決定你的作品,實現和文檔。

+0

感謝您讓我重溫這個問題!最後,我們確實使用了一些包含各種查看代碼的代碼,但基本上堅持使用cfc。 onMissingTemplate函數成爲讓我們能夠驅動cfc所有內容的殺手鐗。 –

相關問題