2010-07-16 61 views
3

我被强迫/付出在传统ColdFusion项目上工作(我是一个普通的C#程序员),而与CF有关的一个特性是他们有他们自己的标签,应该与HTML混合(糟糕的错误决定,国际海事组织,因为它只是混淆了我甚至与“以cf开头的规则”)使用一个大的<cfoutput>标签是否有任何性能影响?

除此之外,他们有#字符表示CF“领土”非常类似于ASP的<%的开始。 Net或$ in Spark或许多等价物,但是这只在标签内被解析。

我的问题是:在打开文件的开头并关闭文件时是否有问题,我要使用#字符?

为了说明这里的一些代码:

<cfoutput> 
    Some text #SomeVar# Some text.<br /> 
    Some Images some other things #AnotherVar# 
</cfoutput> 

反对:

Some text <cfoutput>#SomeVar#</cfoutput> Some text.<br/> 
Some Images some other things <cfoutput>#AnotherVar#</cfoutput> 

当然,这似乎微不足道的小内容,但我说的是一整页。

回答

8

根据页面内容,要么罚款。将所有页面放入CFOUTPUT标记内可能会对性能产生影响(次要),因为CFML引擎需要解析并扫描标记内容以获取可执行代码。在CFOUTPUT标签之外,CFML引擎可以将页面忽略为静态内容。

如果您有使用磅符号的CSS和HTML代码(例如命名锚点或十六进制颜色代码),则需要在CFOUTPUT内转义所有磅符号(通过添加第二个符号,如“##”)。因此,我通常只将CFOUTPUT放在代码中,我特别想要CF引擎运行。

也就是说,CFML引擎为持续打开和关闭CFOUTPUT付出了一点性能损失。如果您正在循环播放内容,请将CFOUTPUT放在整个循环中,而不是在循环的每次迭代中打开和关闭它。另外,如果您在知道什么代码是CFML,什么不是代码时遇到问题,您可能希望为像CFEclipse这样的CFML获得更好的IDE /编辑器。它对标签进行颜色编码,让您立即看到CFML和HTML标签之间的区别。它是开源的。

0

它不应该是一个大问题,但要小心使用十六进制颜色,你需要一个额外的#逃避。如果是我,我会尝试将这些大块的内容分解成更小的片断。让HTML,JS,Flash和CSS完成他们的工作并将CF用于服务器端。

+0

是的,我知道。只要认为这是让我使用CSS的好处。 – 2010-07-30 14:10:23

3

您可能会发现一个问题,cfoutput通常用于显示查询,并且它们不能嵌套在其他cfoutput标签中。因此,这将导致“无效的标记嵌套配置”的错误

<cfoutput> 
    <cfoutput query="qFriends"> 
    <li>#qFriends.fname# #qFriends.lname#</li> 
    </cfoutput> 
</cfoutput> 
+1

是的,虽然你可以使用cfloop,但不幸的是他们仍然不允许你在cfloop中使用group属性。我觉得这很奇怪。 – 2010-07-19 06:44:10

-1

如果你想要把CFOUTPUT在页面的开头和结尾,你必须使用双征##对颜色值。

相关问题