我想知道我的cfml页面或cfc组件是否只有cfscript
标签?
我们可以在任何地方使用它吗?它的用法有限制吗?
修改
我很好奇,因为我读了下面一行
除了变量设置外,其他操作往往略有不同 CFScript比标签更快。
阅读here
答案 0 :(得分:9)
现在大多数标签都是作为CFScript就绪的实现实现的,但不是全部。与之前的海报所说的相反,CFMAIL是已经完成的工作之一:http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSe9cbe5cf462523a0693d5dae123bcd28f6d-7ff9.html
就其他脚本报道而言,它位于文档中: http://help.adobe.com/en_US/ColdFusion/9.0/Developing/WSc3ff6d0ea77859461172e0811cbec22c24-7feb.html
注意,现在可以完全用脚本编写CFC: http://help.adobe.com/en_US/ColdFusion/9.0/Developing/WSE99A664D-44E3-44d1-92A0-5FDF8D82B55C.html
但是我会谨慎地这样做,因为并非所有标签都是在脚本中实现的,如果你突然发现你需要在你的脚本专用CFC中使用其中一个......你有点卡住了。 / p>
另外我认为像CFQUERY这样的构造比Query.cfc的方法更优雅。
对于CFScript比基于标记的代码更快的评论,自CFMX7.0中的编译器更改以来,情况并非如此。大多数情况下,代码现在编译成几乎相同的东西。有些操作在CFScript中更快,有些在基于标记的代码中更快。也就是说,与调整实际代码或数据库访问或内存处理相比,这些性能提升最小:我不会将基于标记的代码重构为基于脚本的代码,以试图找到性能提升。
答案 1 :(得分:1)
从CF11开始,all cf*
tags are supported in cfscript。
常规格式如下:
<!--- tag version --->
<cfwhatever arg1="val1" arg2="val2" ... />
<!--- script version --->
<cfscript>
cfwhatever(arg1="val1", arg2="val2", ...);
</cfscript>
当您嵌套标签(即cfhttp / cfhttpparam)时,格式类似于-
<!--- tag version --->
<cfwhatever arg1="val1" arg2="val2" ...>
<cfwhateverparam arg3="val3" ... />
</cfwhatever>
<!--- script version --->
<cfscript>
cfwhatever(arg1="val1", arg2="val2", ...) {
cfwhateverparam(arg3="val3", ...);
};
</cfscript>
我想我记得(尽管我没有找到有关此文档的文档)如果某些cf*
标签在CF11之前已经具有cfscript替代方法,则不支持。
用作功能的CF标记不返回值,如果尝试以这种方式使用它们,则会产生错误:
<cfscript>
cfwhatever(arg1="val1", arg2="val2", ...); //THIS IS OK
var myresult = cfwhatever(arg1="val1", arg2="val2", ...); //SYNTAX ERROR!
//generally, this is what you do instead:
var myresult = '';
cfwhatever(arg1="val1", arg2="val2", ..., variable="myresult");
</cfscript>
答案 2 :(得分:0)
在coldfusion 8及以下标签中,如cfmail在cfscript中不可用。然而,您可以通过将它包装在如下的函数中来调用它们:
<cffunction name="myCfEmail">
<cfmail ...></cfmail>
</cffunction>
<cfscript>
myCfEmail();
</cfscript>
在coldfusion 9中,您实际上可以为某些标签执行此操作。有关如何执行此操作,请参阅http://www.bennadel.com/blog/1663-Learning-ColdFusion-9-CFScript-Updates-For-Tag-Operators.htm。