asp模板引擎終結(jié)者(WEB開發(fā)之ASP模式)
更新時間:2006年06月15日 00:00:00 作者:
闡述一種全新的ASP模板引擎,實現(xiàn)代碼(邏輯)層與HTML(表現(xiàn))層的分離.這種模板實現(xiàn)方法避免了一 般ASP模板加載模板文件(加載組件)和替換所浪費的資源,實現(xiàn)編譯型的模板引擎,提高程序的執(zhí)行速度和穩(wěn)定性。
內(nèi)容:
當前,WEB開發(fā)已經(jīng)變得非?;鸨?因為各種應(yīng)用,已經(jīng)約來越要求表現(xiàn)層和邏輯層的分離.ASP和HTML夾在一起程序?qū)⒆兊秒y于維護,可讀性也差。在PHP領(lǐng)域,模板引擎已經(jīng)非常普遍,如phplib,SMARTY,等等.有使用替換方式的,也有編譯方式的(SMARTY),它們都較好的實現(xiàn)了邏輯層和表現(xiàn)層的分離.由于PHP的影響,在ASP界有人借鑒phplib等使用替換的方法開發(fā)出asp的模板類,由于ASP在字符處理上性能并不是很強大,所以在速度上受到影響,這樣的模板在目前的應(yīng)用也不是很廣泛。如:
借鑒于編譯型的模板,我在ASP中引進這種思路.提出一種應(yīng)用在ASP中的功能和性能都很優(yōu)良的模板體系.下面用代碼表示:
寫到這里,你也許明白了這種模板的精髓了,它只是一種設(shè)計模式,不是一個用模板類來處理的模板引擎。
內(nèi)容:
當前,WEB開發(fā)已經(jīng)變得非?;鸨?因為各種應(yīng)用,已經(jīng)約來越要求表現(xiàn)層和邏輯層的分離.ASP和HTML夾在一起程序?qū)⒆兊秒y于維護,可讀性也差。在PHP領(lǐng)域,模板引擎已經(jīng)非常普遍,如phplib,SMARTY,等等.有使用替換方式的,也有編譯方式的(SMARTY),它們都較好的實現(xiàn)了邏輯層和表現(xiàn)層的分離.由于PHP的影響,在ASP界有人借鑒phplib等使用替換的方法開發(fā)出asp的模板類,由于ASP在字符處理上性能并不是很強大,所以在速度上受到影響,這樣的模板在目前的應(yīng)用也不是很廣泛。如:
1
<!--template.html-->
2
<html>
3
<head>
4
<title>{$title}</title>
5
</head>
6
<body>
7
{$body}
8
</body>
9
</html>

2

3

4

5

6

7

8

9

1
<!--Template.asp-->
2
<%
3
TemplateCode=Load("template.html")'自定義函數(shù),裝載模板文件到TemplateCode
4
TemplateCode=Replace(TemplateCode,"{$title}","asp模板引擎終結(jié)者")'替換模板
5
TemplateCode=Replace(TemplateCode,"{$body}","asp模板引擎終結(jié)者內(nèi)容")'替換模板
6
Response.Write TemplateCode
7
%>
上面的例子只是初步展示了當前ASP模板的思想,有ASP版的CMS系統(tǒng)已經(jīng)嵌入了對模板的邏輯控制,雖然能夠?qū)崿F(xiàn)邏輯和界面的分離,但是這種模板存在的問題就是模板需要每次都用ASP解析一次,程序相當于解析兩次,而且當要替換的內(nèi)容很多的時候,將會降低性能.而且裝載模板需要服務(wù)器支持一種組件(FSO,ADODB,XMLHTTP均可實現(xiàn)).
2

3

4

5

6

7

借鑒于編譯型的模板,我在ASP中引進這種思路.提出一種應(yīng)用在ASP中的功能和性能都很優(yōu)良的模板體系.下面用代碼表示:
1 <!--template.html-->
2 <html>
3 <head>
4 <title><%=title%></title>
5 </head>
6 <body>
7 <!--<%
8 'If邏輯控制,當然這里對于FOR,While 循環(huán)也一樣處理,是不是覺得很簡單呢,
9 '對邏輯進行html注釋,在DW(Dreamweaver)下就不會應(yīng)為邏輯控制的asp占位符產(chǎn)生變形,對于其他的變量將顯示一個asp標記,便于修改
10 IF Catalog="music" Then
11 %>-->
12 <%=music%>
13 <!--<%Else%>-->
14 <%=book%>
15 <!--<%End If%>-->
16 </body>
17 </html>
2 <html>
3 <head>
4 <title><%=title%></title>
5 </head>
6 <body>
7 <!--<%
8 'If邏輯控制,當然這里對于FOR,While 循環(huán)也一樣處理,是不是覺得很簡單呢,
9 '對邏輯進行html注釋,在DW(Dreamweaver)下就不會應(yīng)為邏輯控制的asp占位符產(chǎn)生變形,對于其他的變量將顯示一個asp標記,便于修改
10 IF Catalog="music" Then
11 %>-->
12 <%=music%>
13 <!--<%Else%>-->
14 <%=book%>
15 <!--<%End If%>-->
16 </body>
17 </html>
1 <!--Template.asp-->
2 <%
3 title="asp模板引擎終結(jié)者"
4 Catalog="music"
5 music="音樂"
6 book="書"
7 %>
8 <!--#include file="template.html"-->
思路:asp文件進行常規(guī)的邏輯處理,運算,不用管顯示層,當然需要顯示的變量需要和顯示層結(jié)合(PHP也一樣),在模板文件中用<%%>直接控制變量的顯示和邏輯的控制,不顯示的邏輯控制符用html注釋符<!---->注釋掉,當然,不注釋也是可以的.這樣在ASP文件的最后"<!--#include file="template.html"-->"就實現(xiàn)了模板和ASP文件的結(jié)合,實現(xiàn)了代碼和表現(xiàn)層的分離,這里并沒有用ASP去Load模板,然后替換,浪費不必要ASP資源.這些處理全部都省去了。你會發(fā)現(xiàn)寫ASP文件變得更加方便,因為你再也不需要在其中控制替換,邏輯顯示的行為。在ASP中直接執(zhí)行肯定比替換要來得迅速和穩(wěn)定.況且,加載模板的時候你必須還要加載一個組件.2 <%
3 title="asp模板引擎終結(jié)者"
4 Catalog="music"
5 music="音樂"
6 book="書"
7 %>
8 <!--#include file="template.html"-->
寫到這里,你也許明白了這種模板的精髓了,它只是一種設(shè)計模式,不是一個用模板類來處理的模板引擎。
相關(guān)文章
ASP中Request對象獲取客戶端數(shù)據(jù)的順序(容易忽略)
ASP中Request對象獲取客戶端數(shù)據(jù)的順序(容易忽略)...2006-08-08如何遠程調(diào)用ACCESS數(shù)據(jù)庫[要求加精?。
如何遠程調(diào)用ACCESS數(shù)據(jù)庫[要求加精??!]...2006-06-06ASP Recordset 分頁顯示數(shù)據(jù)的方法(修正版)
最近給別人培訓asp 分頁,對于asp的入門新手來說,最簡單的分頁就是用Recordset 分頁技術(shù)了,他主要用于一些少量數(shù)據(jù)的分頁,對于新手學習是最好的了,對于大量數(shù)據(jù)分頁不建議用。2008-11-11為什么 Windows2003 的 IIS6.0 不能上傳超過 200K 的文件?
為什么 Windows2003 的 IIS6.0 不能上傳超過 200K 的文件?...2006-12-12ASP 中使用 HTTP 協(xié)議發(fā)送參數(shù)詳解
ASP 中使用 HTTP 協(xié)議發(fā)送參數(shù)詳解...2006-12-12