国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP教程 - 關于Asp代碼與頁面的分離模板技術

關于Asp代碼與頁面的分離模板技術

2019-09-28 11:36asp技術網 ASP教程

使用模板實現ASP代碼與頁面分離,以后用asp就可以更方便的前后臺分開制作

在使用ASP制作一個站點的時候,常常會出現一個ASP文件中,程序代碼和HTML代碼混合的情況。這樣子做有許多缺點: 
  1.編程時就要對頁面布局進行設計和編排,造成代碼混亂難懂,不規范; 
  2.當需要改變頁面外觀時,你不僅要改變HTML部份,也需要改變ASP代碼,不易維護。 
  那么,要如何才能避免這些麻煩呢? 
  答案就是使用模板文件,將ASP代碼和HTML頁面分開,一切問題就都解決了。使用模板有以下好處: 
  1.在很短的時間內可以替換整個站點的外觀; 
  2.使程序員可以抽象編程,而無須接觸HTML代碼; 
  3.可以重復利用以前的模板。 
  使用過PHP的程序就會知道,PHP有個模板程序(FastTemplate),現在的問題是如何在ASP中實現類似的功能。 
  Microsoft的ASP帶有兩種腳本:VBScript和JScript。它們都帶有一個正則表達式對象(RegExp),利用字符串對象和RegExp對象,就可以輕松的實現模板功能。沐楓以此編寫了一個Template.JScript.INC文件,此文件的內容附在文章后面。有能力的讀者可以根據自己的需要進行改進。 
  下面介紹一下使用方法。由于此文件是使用JScript編寫的(當然要轉成VBScript也很容易),因此,缺省腳本語言要設為JScript,即ASP程序第一行應為:%@Language=JScript%,然后再包含模板程序文件:!#includefile=Template.JScript.INC。 
  先介紹一下Template類的使用: 
  1.建立Template對象:Template(Path) 
  參數:Path(字符串類型)HTML模板文件的存放路徑。 
  使用new操作符建立Template對象。 
  例子: 
以下是引用片段: 
  vartpl=newTemplate(c:\template);  

  在程序中可以用tpl.TplPath來取得模板路徑,也可以通過tpl.TplPath來改變模板路徑。 
  如: 
以下是引用片段: 
  tpl.TplPath=d:\template;  

  2.裝載模板文件:Template.Load(Name,File) 
  參數:Name(字符串類型)是一個模板變量名。 
  File(字符串類型)模板文件名。此文件存放在HTML模板路徑下。 
  讀取文件File到模板變量Name中。 
  例子: 
以下是引用片段: 
  tpl.Load(Main,TEST.HTM);  

  此時,模板變量Main就包含了文件TEST.HTM的內容。 
  你可以用tpl.Main來訪問模板變量Main。 
  例子: 
以下是引用片段: 
  %=tpl.Main%  

  將顯示剛才讀進來的TEST.HTM文件內容。 
  3.模板分拆:Template.Split(Name) 
  參數:Name(字符串類型)是一個模板變量名。 
  將Name中的子模板分解。 
  例子: 
以下是引用片段: 
  先假設上例中的TEST.HTM內容為:  
  -  
  這是主模板。接下來是:!#TPLDEFSUBSUB子模板,還有  
  !#TPLDEFTHIRDTHIRD模板。!#TPLENDTHIRD  
  !#TPLENDSUB  
  -  

  那么: 
以下是引用片段: 
  tpl.Split(Main);  

  執行以后,就會生成新的模板變量SUB,和THIRD,它們的內容就是!#TPLDEFSUB和!#TPLENDSUB之間語句。 
  而且Main模板變量的內容也會發生改變: 
  tpl.Main的內容為:這是主模板。接下來是{SUB} 
  tpl.SUB的內容為:SUB子模板,還有{THIRD} 
  tpl.THIRD的內容為:THIRD模板。 
  TPLDEF和TPLEND定義的語句塊充許多重嵌套。 
  4.模板處理:Template.Parse(Name) 
  參數:Name(字符串類型)是一個模板變量。 
  將模板中用花括號括起來的字串用同名的模板變量的內容替換。 
  例子:續上例 

以下是引用片段: 
  %=tpl.Parse(Main)%  

  顯示:這是主模板。接下來是SUB子模板,還有{THIRD} 
  由例子可知,Parse只替換Main模板中的{SUB}變量,而不能嵌套替換下去。這是為了增加程序靈活性而故意設計的。那么該怎么樣完整顯示Main模板呢? 
  例子: 
以下是引用片段: 
  tpl.SUB=tpl.Parse(SUB);//先處理SUB變量,再處理Main變量。  
  Response.write(tpl.Parse(Main));  


  在使用ASP制作一個站點的時候,常常會出現一個ASP文件中,程序代碼和HTML代碼混合的情況。這樣子做有許多缺點: 
  1.編程時就要對頁面布局進行設計和編排,造成代碼混亂難懂,不規范; 
  2.當需要改變頁面外觀時,你不僅要改變HTML部份,也需要改變ASP代碼,不易維護。 
  那么,要如何才能避免這些麻煩呢? 
  答案就是使用模板文件,將ASP代碼和HTML頁面分開,一切問題就都解決了。使用模板有以下好處: 
  1.在很短的時間內可以替換整個站點的外觀; 
  2.使程序員可以抽象編程,而無須接觸HTML代碼; 
  3.可以重復利用以前的模板。 
  使用過PHP的程序就會知道,PHP有個模板程序(FastTemplate),現在的問題是如何在ASP中實現類似的功能。 
  Microsoft的ASP帶有兩種腳本:VBScript和JScript。它們都帶有一個正則表達式對象(RegExp),利用字符串對象和RegExp對象,就可以輕松的實現模板功能。沐楓以此編寫了一個Template.JScript.INC文件,此文件的內容附在文章后面。有能力的讀者可以根據自己的需要進行改進。 
  下面介紹一下使用方法。由于此文件是使用JScript編寫的(當然要轉成VBScript也很容易),因此,缺省腳本語言要設為JScript,即ASP程序第一行應為:%@Language=JScript%,然后再包含模板程序文件:!#includefile=Template.JScript.INC。 
  先介紹一下Template類的使用: 
  1.建立Template對象:Template(Path) 
  參數:Path(字符串類型)HTML模板文件的存放路徑。 
  使用new操作符建立Template對象。 
  例子: 
以下是引用片段: 
  vartpl=newTemplate(c:\template);  

  在程序中可以用tpl.TplPath來取得模板路徑,也可以通過tpl.TplPath來改變模板路徑。 
  如: 
以下是引用片段: 
  tpl.TplPath=d:\template;  

  2.裝載模板文件:Template.Load(Name,File) 
  參數:Name(字符串類型)是一個模板變量名。 
  File(字符串類型)模板文件名。此文件存放在HTML模板路徑下。 
  讀取文件File到模板變量Name中。 
  例子: 
以下是引用片段: 
  tpl.Load(Main,TEST.HTM);  

  此時,模板變量Main就包含了文件TEST.HTM的內容。 
  你可以用tpl.Main來訪問模板變量Main。 
  例子: 
以下是引用片段: 
  %=tpl.Main%  

  將顯示剛才讀進來的TEST.HTM文件內容。 
  3.模板分拆:Template.Split(Name) 
  參數:Name(字符串類型)是一個模板變量名。 
  將Name中的子模板分解。 
  例子: 
以下是引用片段: 
  先假設上例中的TEST.HTM內容為:  
  -  
  這是主模板。接下來是:!#TPLDEFSUBSUB子模板,還有  
  !#TPLDEFTHIRDTHIRD模板。!#TPLENDTHIRD  
  !#TPLENDSUB  
  -  

  那么: 
以下是引用片段: 
  tpl.Split(Main);  

  執行以后,就會生成新的模板變量SUB,和THIRD,它們的內容就是!#TPLDEFSUB和!#TPLENDSUB之間語句。 
  而且Main模板變量的內容也會發生改變: 
  tpl.Main的內容為:這是主模板。接下來是{SUB} 
  tpl.SUB的內容為:SUB子模板,還有{THIRD} 
  tpl.THIRD的內容為:THIRD模板。 
  TPLDEF和TPLEND定義的語句塊充許多重嵌套。 
  4.模板處理:Template.Parse(Name) 
  參數:Name(字符串類型)是一個模板變量。 
  將模板中用花括號括起來的字串用同名的模板變量的內容替換。 
  例子:續上例 

以下是引用片段: 
  %=tpl.Parse(Main)%  

  顯示:這是主模板。接下來是SUB子模板,還有{THIRD} 
  由例子可知,Parse只替換Main模板中的{SUB}變量,而不能嵌套替換下去。這是為了增加程序靈活性而故意設計的。那么該怎么樣完整顯示Main模板呢? 
  例子: 
以下是引用片段: 
  tpl.SUB=tpl.Parse(SUB);//先處理SUB變量,再處理Main變量。  
  Response.write(tpl.Parse(Main));  



  在使用ASP制作一個站點的時候,常常會出現一個ASP文件中,程序代碼和HTML代碼混合的情況。這樣子做有許多缺點: 
  1.編程時就要對頁面布局進行設計和編排,造成代碼混亂難懂,不規范; 
  2.當需要改變頁面外觀時,你不僅要改變HTML部份,也需要改變ASP代碼,不易維護。 
  那么,要如何才能避免這些麻煩呢? 
  答案就是使用模板文件,將ASP代碼和HTML頁面分開,一切問題就都解決了。使用模板有以下好處: 
  1.在很短的時間內可以替換整個站點的外觀; 
  2.使程序員可以抽象編程,而無須接觸HTML代碼; 
  3.可以重復利用以前的模板。 
  使用過PHP的程序就會知道,PHP有個模板程序(FastTemplate),現在的問題是如何在ASP中實現類似的功能。 
  Microsoft的ASP帶有兩種腳本:VBScript和JScript。它們都帶有一個正則表達式對象(RegExp),利用字符串對象和RegExp對象,就可以輕松的實現模板功能。沐楓以此編寫了一個Template.JScript.INC文件,此文件的內容附在文章后面。有能力的讀者可以根據自己的需要進行改進。 
  下面介紹一下使用方法。由于此文件是使用JScript編寫的(當然要轉成VBScript也很容易),因此,缺省腳本語言要設為JScript,即ASP程序第一行應為:%@Language=JScript%,然后再包含模板程序文件:!#includefile=Template.JScript.INC。 
  先介紹一下Template類的使用: 
  1.建立Template對象:Template(Path) 
  參數:Path(字符串類型)HTML模板文件的存放路徑。 
  使用new操作符建立Template對象。 
  例子: 
以下是引用片段: 
  vartpl=newTemplate(c:\template);  

  在程序中可以用tpl.TplPath來取得模板路徑,也可以通過tpl.TplPath來改變模板路徑。 
  如: 
以下是引用片段: 
  tpl.TplPath=d:\template;  

  2.裝載模板文件:Template.Load(Name,File) 
  參數:Name(字符串類型)是一個模板變量名。 
  File(字符串類型)模板文件名。此文件存放在HTML模板路徑下。 
  讀取文件File到模板變量Name中。 
  例子: 
以下是引用片段: 
  tpl.Load(Main,TEST.HTM);  

  此時,模板變量Main就包含了文件TEST.HTM的內容。 
  你可以用tpl.Main來訪問模板變量Main。 
  例子: 
以下是引用片段: 
  %=tpl.Main%  

  將顯示剛才讀進來的TEST.HTM文件內容。 
  3.模板分拆:Template.Split(Name) 
  參數:Name(字符串類型)是一個模板變量名。 
  將Name中的子模板分解。 
  例子: 
以下是引用片段: 
  先假設上例中的TEST.HTM內容為:  
  -  
  這是主模板。接下來是:!#TPLDEFSUBSUB子模板,還有  
  !#TPLDEFTHIRDTHIRD模板。!#TPLENDTHIRD  
  !#TPLENDSUB  
  -  

  那么: 
以下是引用片段: 
  tpl.Split(Main);  

  執行以后,就會生成新的模板變量SUB,和THIRD,它們的內容就是!#TPLDEFSUB和!#TPLENDSUB之間語句。 
  而且Main模板變量的內容也會發生改變: 
  tpl.Main的內容為:這是主模板。接下來是{SUB} 
  tpl.SUB的內容為:SUB子模板,還有{THIRD} 
  tpl.THIRD的內容為:THIRD模板。 
  TPLDEF和TPLEND定義的語句塊充許多重嵌套。 
  4.模板處理:Template.Parse(Name) 
  參數:Name(字符串類型)是一個模板變量。 
  將模板中用花括號括起來的字串用同名的模板變量的內容替換。 
  例子:續上例 

以下是引用片段: 
  %=tpl.Parse(Main)%  

  顯示:這是主模板。接下來是SUB子模板,還有{THIRD} 
  由例子可知,Parse只替換Main模板中的{SUB}變量,而不能嵌套替換下去。這是為了增加程序靈活性而故意設計的。那么該怎么樣完整顯示Main模板呢? 
  例子: 
以下是引用片段: 
  tpl.SUB=tpl.Parse(SUB);//先處理SUB變量,再處理Main變量。  
  Response.write(tpl.Parse(Main));  


  5.自定義模板變量。  
  自定義模板變量很簡單,可以直接用賦值語句來定義和修改任何變量: 
  例子: 
以下是引用片段: 
  tpl.Hahaha=這是自定義變量;  
  tpl.THIRD=改變原模板中的THIRD變量;  

  需要注意的是,由于JScrip是區分大小寫的,因此一定要注意大小寫的拼寫。一般來說,HTML模板中定義的模板變量都用大寫。 
  另外,模板中使用的TplPath,Load,Parse,Split變量是內部使用的,不要挪做它用,否則程序將可能發生異常。 
  下面舉個完整的例子: 
  第一步:先建立Html模板文件。 
  這里先說明HTML模板文件的組成。首先,它和普通的HTML文件幾乎沒有區別,只不過多了幾個標記。 
  模板的標記有兩種。讓我們先看一個例子: 
  TEST.HTM 

以下是引用片段: 
-  
!文件名:TEST.HTM  
HTML  
TITLE范例/TITLE  
HEADER  
/HEADER  
BODY  
這是一個表格范例。  
TABLE  
!#TPLDEFMAXX10!#TPLENDMAXX  
!...注意,此處使用了一個技巧即定義了MAXX模板變量并賦值為10。  
TR  
TDX/TDTDX的平方/TD  
/TR  
!#TPLDEFROW  
TR  
TD{X}/TDTD{XX}/TD  
/TR  
!#TPLENDROW  
/TABLE  
以上共有{COUNT}行數據。  
/BODY  
/HTML  
-  


  從上面可以看出,象{X},{XX},{COUNT}之類的記號是定義模板變量。它們將會在ASP程序中被替代。 
  而!#TPLDEFROW...!#TPLENDROW是定義一個語句塊ROW。在ASP程序中就可以將ROW塊重復多次。 
  第二步:設計ASP程序。 
  TEST.ASP 

以下是引用片段: 
-  
%@Language=JScript%  
!#includefile=Template.JScript.INC  
%  
vartpl=newTemplate(c:\Inetpub\wwwroot);  
varstr=;  
vari;  
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  
<%  
/*********************************************************/  
/*TemplateClass*/  
/*Author:*/  
/*Date:6-09*/  
/*********************************************************/  
//TemplateMethodDefine  
functionTemplate_Parse(name)  
{  
if(this[name]==null)  
return;  
varreg=newRegExp({(\w*)},ig);  
varstr=newString(this[name]);  
vararr=str.match(reg);  
vari;  
if(arr!=null)  
for(i=0;iarr.length;i++)  
{  
key=arr.slice(1,-1);  
reg=newRegExp(arr,ig);  
if(this[key]!=null)  
str=str.replace(reg,this[key]);  
}  
returnstr;  
}  
functionTemplate_Split(name)  
{  
varlen=0;  
vararr;  
if(this[name]==null)  
return;  
varTemplate_Exp=newRegExp(!#TPLDEF+(\w*)*((.|\n)*)!#TPLEND+\1*,i);  
while(this[name].search(Template_Exp)!=-1)  
{  
arr=this[name].match(Template_Exp);  
this[arr[1}=arr[2];  
this[name]=this[name].replace(Template_Exp,{+arr[1]+});  
this.Split(arr[1]);  
}  
}  
functionTemplate_Load(name,filename)  
{  
varfso=newActiveXObject(Scripting.FileSystemObject);  
varfile=fso.BuildPath(this.TplPath,filename);  
if(fso.FileExists(file))  
{  
varf=fso.OpenTextFile(file,1);  
this[name]=f.ReadAll();  
}  
}  
//TemplateConstructor  
functionTemplate(path)  
{  
//Property  
this.TplPath=path;  
//Method  
this.Parse=Template_Parse;  
this.Split=Template_Split;  
this.Load=Template_Load;  
}  
% >

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 精品久久久久久久人人人人传媒 | 日韩精品一区二区三区中文字幕 | 激情网在线观看 | 国内成人自拍视频 | 国产精品久久国产精品 | 国产精品入口久久 | 久久久高清 | 天天干在线影院 | 国产精品黄色 | 日本精品久久 | 在线免费日韩 | 成人免费视频在线观看 | 少妇色欲网 | 伦理午夜电影免费观看 | 亚洲免费不卡视频 | 亚洲精品欧美 | 久久中国 | 久久久久久久国产精品 | 国产精品久久久久久久久久久免费看 | 寡妇少妇高潮免费看蜜臀a 午夜免费电影 | 国产999精品久久久久久麻豆 | 亚洲网站在线观看 | 日韩1区| 国产日韩欧美三级 | 九九亚洲视频 | 一级片免费视频 | 中文字幕一区二区三区四区五区 | 亚洲二区视频 | 毛片国产 | 成人深夜在线观看 | 中文字幕视频在线 | 亚洲日韩成人 | 中文字幕在线观看 | 国产成人高清在线 | 亚洲精品一区二区三区 | 亚洲第一av| 国产91看片| 精品国产视频 | 在线观看五码 | 亚洲三级电影 | 依人免费视频 |