Asp中代码与页面的分离(3) ----------------- 从上面可以看出,象{X},{XX},{COUNT}之类的记号是定义模板变量。它们将会在ASP程序中被替代。 而<!--#TPLDEF ROW-->...<!--#TPLEND ROW-->是定义一个语句块"ROW"。在ASP程序中就可以将"ROW"块重复多次。 第二步:设计ASP程序。 TEST.ASP ------------------- <%@Language=JScript%> <!--#include file="Template.JScript.INC"--> <% var tpl = new Template("c:\\Inetpub\\wwwroot"); var str=""; var i; tpl.Load("Main","TEST.HTM"); tpl.Split("Main"); tpl.COUNT = 0; for(i=1;i<=tpl.MAXX;i++) //tpl.MAXX在模板中定义为10。 { tpl.X = i; tpl.XX = i*i; str+=tpl.Parse("ROW"); tpl.COUNT++; } tpl.ROW = str; tpl.MAXX =""; //清空此模板变量,以避免被显示出来。 %> <%=tpl.Parse("Main")%> ------------------- 上面的程序将显示一个1到10的平方表。 通常在使用模板的情况下,都只要在最后一行加上显示页面的语句。因此整个程序显得十分清晰。此时,只要对模板文件进行编辑,就可以改变整个页面的外观。 至于模板文件,它可以是任何文件,如HTML文件、ASP文件,甚至是程序本身!,而且在一个程序中可以装载多个模板配合使用,这样,不仅具有极大灵活性,而且模板文件与ASP程序的相关性可减到最低程度。 好好利用模板,将会使你的工作更加轻松。 附:Template 源程序 ------------------------------------ <!--文件名:Template.JScript.INC--> <% /*********************************************************/ /* Template Class */ /* Author: SAYYES(www.knowsky.com) */ /* Date: 2003-6-09 */ /*********************************************************/ //Template Method Define function Template_Parse(name) { if(this[name]==null) return ""; var reg = new RegExp("{(\\w*)}","ig"); var str = new String(this[name]); var arr = str.match(reg); var i; if(arr != null) for(i=0;i<arr.length;i++) { key = arr[i].slice(1,-1); reg = new RegExp(arr[i],"ig");