Asp-Classic

Response.Write vs <%= %>

  • September 30, 2008

請記住,這是針對經典 asp

更好的是,所有 HTML 都包含在 Response.Write 語句中或通過 <%= %> 將變數插入 HTML。

例如

Response.Write "&lt;table&gt;" & vbCrlf
Response.Write "&lt;tr&gt;" &vbCrLf
Response.Write "&lt;td class=""someClass""&gt;" & someVariable & "&lt;/td&gt;" & vbCrLf
Response.Write "&lt;/tr&gt;" & vbCrLf
Response.Write "&lt;/table&gt;" & vbCrLf

VS

&lt;table&gt;
 &lt;tr&gt;
    &lt;td class="someClass"&gt;&lt;%= someVariable %&gt;&lt;/td&gt;
 &lt;/tr&gt;
&lt;/table&gt;

我主要是從性能的角度問,當插入多個變數時,哪個對伺服器的影響最小?

如果沒有技術差異,那麼兩者之間的論點是什麼?

首先,您應該考慮的最重要因素是易於維護。您可以購買一個伺服器場,而這些錢和時間會浪費在必須破譯一個混亂的網站來維護它的情況下。

無論如何,沒關係。歸根結底,ASP 所做的只是執行一個腳本!ASP 解析器獲取頁面,並轉換&lt;%= expression %&gt;為直接的腳本呼叫,每個連續的 HTML 塊都變成一個對Response.Write. 生成的腳本將被記憶體並重用,除非磁碟上的頁面發生更改,這會導致重新計算記憶體的腳本。

現在,過多的使用&lt;%= %&gt;導致了現代版的“意大利麵條程式碼”:可怕的“標籤湯”。您將無法確定邏輯的正面或反面。另一方面,過多地使用 Response.Write 意味著您將永遠無法看到頁面,直到它呈現。在適當的時候使用&lt;%= %&gt;以獲得兩全其美。

我的第一條規則是注意“可變文本”與“靜態文本”的比例。

如果您只有幾個地方需要替換可變文本,則&lt;%= %&gt;語法非常緊湊且易讀。然而,隨著&lt;%= %&gt;開始積累,它們模糊了越來越多的 HTML,同時 HTML 也越來越模糊了你的邏輯。作為一般規則,一旦您開始使用循環,您需要停止並切換到 Response.Write`。

沒有很多其他硬性規定。您需要為您的特定頁面(或頁面的部分)決定哪一個更重要,或者自然更難理解,或更容易破壞:您的邏輯還是您的 HTML?通常是其中之一(我見過數百個案例)

如果你的邏輯更關鍵,你應該更重視Response.Write; 它將使邏輯脫穎而出。如果您對 HTML 更挑剔,請青睞&lt;%= %&gt;,這將使頁面結構更加明顯。

有時我不得不編寫兩個版本並並排比較它們以確定哪個更易讀;這是不得已而為之的辦法,但要在程式碼記憶猶新的時候這樣做,三個月後當你不得不進行更改時,你會很高興。

引用自:https://stackoverflow.com/questions/151448