作爲@steve-hollandmentions創建模板是避免代碼中所有煩人的HTML字符串的好方法,並且使佈局變得輕而易舉。
我以前一直在處理HTML模板腳本,通常我會構建一個Scripting.Dictionary
,其中包含將在模板內部替換的鍵值對。
Function getHTMLTemplate(url, params)
Dim stream, keys, html, idx
Set stream = Server.CreateObject("ADODB.Stream")
With stream
.Type = adTypeText
.Charset = "utf-8"
Call .Open()
Call .LoadFromFile(url)
html = .ReadText(adReadAll)
Call .Close()
End With
Set stream = Nothing
keys = o_params.Keys
For idx = 0 To UBound(keys, 1)
html = Replace(html, keys(idx), params.Item(keys(idx)))
Next
Set keys = Nothing
Set params = Nothing
getHTMLTemplate = html
End Function
用法:
Dim params, html
Set params = Server.CreateObject("Scripting.Dictionary")
With params
.Add("[html_title]", "Title Here")
.Add("[html_logo]", "/images/logo.gif")
'... and so on
End With
html = getHTMLTemplate(Server.MapPath("/templates/main.htm"), params)
Call Response.Write(html)
例main.htm
結構:
<!doctype html>
<html>
<head>
<title>[html_title]</title>
<link rel="stylesheet" type="text/css" href="/styles/main.css" />
</head>
<body>
<div class="header">
<img src="[html_logo]" alt="Company Name" />
</div>
</body>
</html>
爲什麼使用ADODB.Stream
代替Scripting.FileSystemObject
;
您可以控制返回的Charset
,甚至可以根據需要將其從一個轉換爲另一個。
如果模板特別大,您可以使用具有特定緩衝區大小的Read()
方法流式傳輸內容,以提高讀取性能。
非常真實,這就是我在大多數情況下所做的。簡單,簡單,乾淨。 –
@ShadowWizard一直以來都是這種方法的忠實粉絲,對於電子郵件模板也非常適用。 – Lankymart