[點(diǎn)晴永久免費(fèi)OA]asp模板引擎終結(jié)者(WEB開(kāi)發(fā)之ASP模式)
闡述一種全新的ASP模板引擎,實(shí)現(xiàn)代碼(邏輯)層與HTML(表現(xiàn))層的分離。這種模板實(shí)現(xiàn)方法避免了一般ASP模板加載模板文件(加載組件)和替換所浪費(fèi)的資源,實(shí)現(xiàn)編譯型的模板引擎,提高程序的執(zhí)行速度和穩(wěn)定性。
內(nèi)容: 當(dāng)前,WEB開(kāi)發(fā)已經(jīng)變得非?;鸨?yàn)楦鞣N應(yīng)用,已經(jīng)約來(lái)越要求表現(xiàn)層和邏輯層的分離。ASP和HTML夾在一起程序?qū)⒆兊秒y于維護(hù),可讀性也差。在PHP領(lǐng)域,模板引擎已經(jīng)非常普遍,如phplib、SMARTY等等。有使用替換方式的,也有編譯方式的(SMARTY),它們都較好的實(shí)現(xiàn)了邏輯層和表現(xiàn)層的分離。由于PHP的影響,在ASP界有人借鑒phplib等使用替換的方法開(kāi)發(fā)出asp的模板類(lèi),由于ASP在字符處理上性能并不是很強(qiáng)大,所以在速度上受到影響,這樣的模板在目前的應(yīng)用也不是很廣泛。如:<!--template.html--><html><head><title>{$title}</title></head><body>{$body}</body></html> <!--Template.asp--><%TemplateCode=Load("template.html")'自定義函數(shù),裝載模板文件到TemplateCodeTemplateCode=Replace(TemplateCode,"{$title}","asp模板引擎終結(jié)者")'替換模板TemplateCode=Replace(TemplateCode,"{$body}","asp模板引擎終結(jié)者內(nèi)容")'替換模板 Response.Write TemplateCode %> 上面的例子只是初步展示了當(dāng)前ASP模板的思想,有ASP版的CMS系統(tǒng)已經(jīng)嵌入了對(duì)模板的邏輯控制,雖然能夠?qū)崿F(xiàn)邏輯和界面的分離,但是這種模板存在的問(wèn)題就是模板需要每次都用ASP解析一次,程序相當(dāng)于解析兩次,而且當(dāng)要替換的內(nèi)容很多的時(shí)候,將會(huì)降低性能。而且裝載模板需要服務(wù)器支持一種組件(FSO、ADODB、XMLHTTP均可實(shí)現(xiàn))。
借鑒于編譯型的模板,我在ASP中引進(jìn)這種思路,提出一種應(yīng)用在ASP中的功能和性能都很優(yōu)良的模板體系,下面用代碼表示: 1 <!--template.html--> 2 <html> 3 <head> 4 <title><%=title%></title> 5 </head> 6 <body> 7 <!--<% 8 'If邏輯控制,當(dāng)然這里對(duì)于 FOR、While 循環(huán)也一樣處理,是不是覺(jué)得很簡(jiǎn)單呢。 9 '對(duì)邏輯進(jìn)行html注釋?zhuān)贒W(Dreamweaver)下就不會(huì)應(yīng)為邏輯控制的asp占位符產(chǎn)生變形,對(duì)于其他的變量將顯示一個(gè)asp標(biāo)記,便于修改。 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="音樂(lè)" 6 book="書(shū)" 7 %> 8 <!--#include file="template.html"--> 思路:asp文件進(jìn)行常規(guī)的邏輯處理,運(yùn)算,不用管顯示層,當(dāng)然需要顯示的變量需要和顯示層結(jié)合(PHP也一樣),在模板文件中用<%%>直接控制變量的顯示和邏輯的控制,不顯示的邏輯控制符用html注釋符<!---->注釋掉。當(dāng)然,不注釋也是可以的。這樣在ASP文件的最后"<!--#include file="template.html"-->"就實(shí)現(xiàn)了模板和ASP文件的結(jié)合,實(shí)現(xiàn)了代碼和表現(xiàn)層的分離,這里并沒(méi)有用ASP去Load模板,然后替換,浪費(fèi)不必要ASP資源,這些處理全部都省去了。你會(huì)發(fā)現(xiàn)寫(xiě)ASP文件變得更加方便,因?yàn)槟阍僖膊恍枰谄渲锌刂铺鎿Q,邏輯顯示的行為。在ASP中直接執(zhí)行肯定比替換要來(lái)得迅速和穩(wěn)定。況且,加載模板的時(shí)候你必須還要加載一個(gè)組件。 寫(xiě)到這里,你也許明白了這種模板的精髓了,它只是一種設(shè)計(jì)模式,不是一個(gè)用模板類(lèi)來(lái)處理的模板引擎。 該文章在 2022/7/5 1:47:47 編輯過(guò) |
關(guān)鍵字查詢(xún)
相關(guān)文章
正在查詢(xún)... |