Coldfusion 什么时候应该在CFML中使用自定义标记?

Coldfusion 什么时候应该在CFML中使用自定义标记?,coldfusion,custom-tag,Coldfusion,Custom Tag,哪些是常见的用例(不是CFX标签)?在3年的CF经验中,我从未写过一篇。有人能告诉我,在哪种用例/情况下,我们会选择自定义标记而不是cfc/udf吗?我认为,大多数情况下,自定义标记已经被搁置一旁,因为udf、cfc和与Java的集成(以及在较小程度上的.NET)允许以更简单、更直接的方式来做类似的事情 回顾我开始使用CF5的时候,我可以想到几个例子。一个很好的例子可能是CFX)Zip,它允许与Zip文件进行交互,在此之前可以直接通过CF进行交互 在更现代的环境中,我能想到的唯一用途是提供不是用

哪些是常见的用例(不是CFX标签)?在3年的CF经验中,我从未写过一篇。有人能告诉我,在哪种用例/情况下,我们会选择自定义标记而不是cfc/udf吗?

我认为,大多数情况下,自定义标记已经被搁置一旁,因为udf、cfc和与Java的集成(以及在较小程度上的.NET)允许以更简单、更直接的方式来做类似的事情

回顾我开始使用CF5的时候,我可以想到几个例子。一个很好的例子可能是CFX)Zip,它允许与Zip文件进行交互,在此之前可以直接通过CF进行交互

在更现代的环境中,我能想到的唯一用途是提供不是用Java或.NET编写的预编译代码,比如用C编写的专有Doodas。不过,这是一个相当小的用途


老实说,我认为在这一点上,它们比其他任何东西都更容易兼容。

记住,定制标签曾经是扩展CFML的唯一方法(直到版本4)-UDF出现得晚(CF 5),CFC出现得晚(CF MX)。它们不像以前那样普遍使用,原因很简单,有更多的选择

自定义标记本质上是过程性的,在一种语言中,随着CFC的出现,它在实践中变得越来越面向对象。这是它们不太常见的另一个原因

但仍有一些情况下它们会派上用场(但从来都不是必需的)——主要用于接口工作。创建开始和结束状态的能力肯定会派上用场。一个简单的例子可以是页面内容的“包装器”——开始标记可以添加HTML标题和页面导航,而结束标记可以添加页脚并结束页面

通过这种方式,您的页面内容只能是:

<cfmodule... >
       Page Content!
</cfmodule>

页面内容!

当然,还有其他方法可以做到这一点,但有时经典作品仍然有价值

查看CFUniform项目,了解自定义标记用法的一个很好的示例。在为应用程序的UI部分构建可重用部件时,自定义标记非常有用。

自从CFCs问世以来,我就不再使用自定义标记,只是因为开销太大。它们的启动和执行时间太长。但正如@Jim Davis所说,如果你需要写一个围绕其他内容的标签,它们可能会很有用


但在一个定义良好的解决方案中,您可以将它们一起使用。

在一个您不会注意到的小站点上可能存在重复。但是当我们在使用自定义模块而不是组件构建的查询上运行负载测试程序时。甚至围绕调用进行迭代CFLOOP,性能也会有很大的差异。这可能是因为ColdFusion在单独的线程中执行自定义模块。