2010-07-16 62 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在頁面的開頭和結尾,你必須使用雙徵##對顏色值。

相關問題