这些ColdFusion组件之间有什么区别吗?

这些ColdFusion组件之间有什么区别吗?,coldfusion,cfc,Coldfusion,Cfc,我知道结果是一样的,但有什么真正的区别吗?也许是速度什么的 component { remote function getMath(){ math = 2 + 2; return math; } } 或 远程函数getMath(){ 数学=2+2; 回归数学; } 或 数学=2+2; 回归数学; 并不特别 版本3,完整标签,将向后兼容ColdFusion 8和ColdFusion服务器的开源版本,如Railo或OpenBD 版本2既不是什么也不是什么

我知道结果是一样的,但有什么真正的区别吗?也许是速度什么的

component {

 remote function getMath(){ 

    math = 2 + 2;   

    return math;
  }

}


远程函数getMath(){
数学=2+2;
回归数学;
}


数学=2+2;
回归数学;
并不特别

版本3,完整标签,将向后兼容ColdFusion 8和ColdFusion服务器的开源版本,如Railo或OpenBD

版本2既不是什么也不是什么

版本1是完整的ColdFusion 9脚本版本


我建议您在第一个版本和最后一个版本之间进行选择,并坚持使用。版本2与coldfusion 8不向后兼容,既不是标记也不是脚本。这样的编码很快就会变得一团糟

如果您计划用脚本编写所有内容,那么示例1就是一个不错的选择

您可以在脚本中做任何您想做的事情,如果缺少什么,您可以编写一个cfc来实现缺少的功能,然后用新语法调用它


如果你从一个新的代码库开始,我会尽量避免使用任何标记,因此选择1。

在执行速度方面,它们都编译为相同的字节码,因此应该是相同的

就键入的字符数而言(不包括换行符/制表符):

例1:64

例2:100

例3:129

如果您运行的是Adobe CF9,请使用选项1。它要简洁得多。现在你几乎可以在
中做任何事情


如果要检查每个文件的编译字节码,请在cf admin中保存.class文件,并使用反编译器在/Classes目录中查看这些文件。例如,

cfscript可能要快一点,并且与其他语言更一致,而方法更简单(隐藏更复杂)并且更相似

CF最初是一种基于脚本的语言,现在已经发展到包含一种完整的脚本风格来替代这种方法


差异是开发人员风格的问题。

谢谢您提供的信息。我想开始用cfscript编写所有组件,但我知道cfscript仍然有一些限制。我还想在我的应用程序中保持所有内容的一致性,因此选项3可能是最好的选择。我只是不确定它是否有任何负面影响。再次感谢。许多coldfusion博主对cfscript和cfml中哪一种表现最好表示了不同的看法。我正在用cfscript编写组件,就像您的版本1一样。由于我的背景更像java,我发现cfscript组件比基于标记的组件更可读。缺点是我必须为没有类似cfscript的标记编写cfscript包装。所以请注意,并不是所有的标记都有相同的cfscript。对于语言新手来说,这是一个令人困惑的方面
cfscript
刚开始时还不成熟,如果还不是100%。我们仍然使用基于标记的语法,因为它是100%完整的,我不想将CFC包装在标记功能上,因为我知道在将来的某个时候,在
cfscript
赶上基于标记的语法之后,这将是多余的。@Ciaran Archer,几个月前,我把所有的开发工作都转到了完整的脚本组件上,我再也没有回头看。我不记得上次在组件中使用标记是什么时候了,但可能是为了编写包装器函数。虽然CFScript在某些方面仍然不足,但我并没有遇到过很多情况,因为它阻碍了我的工作。
<cfcomponent>

  <cfscript>

    remote function getMath(){  

        math = 2 + 2;   

        return math;
    }

  </cfscript>   

</cfcomponent>
<cfcomponent>

  <cffunction name="getMath" access="remote">

      <cfscript>

            math = 2 + 2;   

            return math;

      </cfscript>   

  </cffunction>             

</cfcomponent>