我应该在CFC中使用CFINCLUDE还是CFSAVECONTENT

时间:2009-12-11 12:08:54

标签: coldfusion cfc

似乎标准MVC approch(与ColdFusion有关)是制作视图文件.cfm并在cfc中执行最终处理视图的CFINCLUDE。

这会破坏cfc的面向对象吗?

这会导致CFML编译器每次都必须编译视图吗?

是否有充分理由不使用GetContent方法自行创建视图文件cfc?

4 个答案:

答案 0 :(得分:6)

  

这会破坏面向对象吗?   cfc的?

实现cfcs的这种模糊的“面向对象”是一种主观的。强迫自己进入“一切必须是一个对象”将迫使你用CF做事,这会产生额外的开销。我需要妥协才能确保应用程序快速高效。不要担心实现“面向对象”的一些不可确定的目标。制定更明确的目标,例如实现cfcs的重用或封装变更。试图查看对象并不一定能帮助您实现这些目标,因为每个视图都会有所不同,并且可能无法重复使用。

  

这会导致CFML编译器   每次必须编译视图?

也编译和缓存了Cfms。我有几个由选项卡组成的大型表单,其中每个选项卡都是一个单独的cfm文件。在第一次加载时,它们需要几秒钟来编译和显示。在后续加载时,将生成标签视图并立即显示。 cfcs也是如此。

  

是否有充分的理由不做   视图文件本身cfc与a   GetContent方法?

我刚才在学习过程中尝试实现自己的框架,最后我采用了cfinclude方法。根据我的记忆,我发现使用cfinclude封装的东西更好,避免了创建对象的麻烦,传递视图所需的参数,担心对象在正确的范围内,并避免了创建视图对象的额外开销。

最后,我认为这是你必须尝试自己找出最适合你情况的方法之一。

答案 1 :(得分:4)

如果您对实施MVC感兴趣,那么您应该查看已经为您做出这些决定的各种CFML框架。

尝试ColdBox,Wheel上的ColdFusion,Mach-II或Model-Glue。或者至少看看他们的源代码,看看他们是如何处理它的。 :)

答案 2 :(得分:1)

不要盲目地遵循某种模式或方法,因为有人建议它。查看您网站的需求并注意自己的偏好,并着眼于其他人维护代码。

具体来说,我使用CFC来封装与DB的交互。我遵循MVC模式,因为将视图代码与模型代码分离是一个非常好的主意,CFC是否遵循真正的OO规则是不太重要。

我在许多地方使用cfincludes来减少视图层中的redundency。

我使用自定义框架(我创建了控制器)实现了我的模式的控制器部分,然后变得更聪明并使用了MachII,Fusebox和Model Glue。这些框架中的每一个都支持/鼓励使用CFC的观点等,或者更好地说明每个框架都支持良好的设计和关注点分离。

找到好的模式,确定哪些适合你,实施和记录。

答案 3 :(得分:0)

CFInclude不会通过直接将其连接到CFM来降低您的CFC可移植性。