WEB开发网      婵犵數濮烽弫鍛婄箾閳ь剚绻涙担鍐叉搐绾剧懓鈹戦悩瀹犲闁汇倗鍋撻妵鍕箛閸洘顎嶉梺绋款儑閸犳劙濡甸崟顖氬唨闁靛ě浣插亾閹烘鈷掗柛鏇ㄥ亜椤忣參鏌″畝瀣暠閾伙絽銆掑鐓庣仭缁楁垿姊绘担绛嬪殭婵﹫绠撻、姘愁樄婵犫偓娴g硶鏀介柣妯款嚋瀹搞儱螖閻樺弶鍟炵紒鍌氱Ч瀹曟粏顦寸痪鎯с偢瀵爼宕煎☉妯侯瀳缂備焦顨嗗畝鎼佸蓟閻旈鏆嬮柣妤€鐗嗗▓妤呮⒑鐠団€虫灀闁哄懐濮撮悾鐤亹閹烘繃鏅濋梺闈涚墕濡瑩顢欒箛鏃傜瘈闁汇垽娼ф禒锕傛煕閵娿儳鍩f鐐村姍楠炴﹢顢欓懖鈺嬬幢闂備浇顫夊畷妯肩矓椤旇¥浜归柟鐑樻尭娴滃綊姊虹紒妯虹仸闁挎洍鏅涜灋闁告洦鍨遍埛鎴︽煙閼测晛浠滃┑鈥炽偢閹鈽夐幒鎾寸彇缂備緡鍠栭鍛搭敇閸忕厧绶炴俊顖滅帛濞呭洭姊绘担鐟邦嚋缂佽鍊垮缁樼節閸ャ劍娅囬梺绋挎湰缁嬫捇宕㈤悽鍛婄厽閹兼番鍨婚埊鏇㈡煥濮樿埖鐓熼煫鍥ュ劤缁嬭崵绱掔紒妯肩畺缂佺粯绻堝畷姗€濡歌缁辨繈姊绘担绛嬪殐闁搞劋鍗冲畷顖炲级閹寸姵娈鹃梺缁樻⒒閳峰牓寮崒鐐寸厱闁抽敮鍋撻柡鍛懅濡叉劕螣鐞涒剝鏂€闂佺粯鍔曞Ο濠囧吹閻斿皝鏀芥い鏃囨閸斻倝鎽堕悙鐑樼厱闁哄洢鍔屾晶顖炴煕濞嗗繒绠婚柡灞界Ч瀹曨偊宕熼鈧▍锝囩磽娴f彃浜炬繝銏f硾椤戝洨绮绘ィ鍐╃厵閻庢稒岣跨粻姗€鏌ㄥ☉妯夹fい銊e劦閹瑩顢旈崟顓濈礄闂備浇顕栭崰鏍礊婵犲倻鏆﹂柟顖炲亰濡茶鈹戦埄鍐ㄧ祷妞ゎ厾鍏樺璇测槈閵忕姈鈺呮煏婢跺牆鍔撮柛鏂款槺缁辨挻鎷呯粙搴撳亾閸濄儳鐭撶憸鐗堝笒閺嬩線鏌熼崜褏甯涢柡鍛倐閺屻劑鎮ら崒娑橆伓 ---闂傚倸鍊搁崐鐑芥倿閿旈敮鍋撶粭娑樺幘濞差亜鐓涢柛娑卞幘椤斿棝姊虹捄銊ユ珢闁瑰嚖鎷�
开发学院WEB开发ASP ASP通用模板类 阅读

ASP通用模板类

 2005-11-18 10:32:39 来源:WEB开发网 闂傚倸鍊搁崐椋庢濮橆兗缂氱憸宥堢亱闂佸湱铏庨崰鏍不椤栫偞鐓ラ柣鏇炲€圭€氾拷闂傚倸鍊搁崐椋庣矆娓氣偓楠炲鏁撻悩鎻掔€梺姹囧灩閻忔艾鐣烽弻銉︾厵闁规鍠栭。濂告煕鎼达紕校闁靛洤瀚伴獮鎺楀箣濠靛啫浜鹃柣銏⑶圭壕濠氭煙閻愵剚鐏辨俊鎻掔墛缁绘盯宕卞Δ鍐冣剝绻涘畝濠佺敖缂佽鲸鎹囧畷鎺戭潩閹典焦鐎搁梻浣烘嚀閸ゆ牠骞忛敓锟�婵犵數濮烽弫鍛婃叏椤撱垹绠柛鎰靛枛瀹告繃銇勯幘瀵哥畼闁硅娲熷缁樼瑹閳ь剙岣胯鐓ら柕鍫濇偪濞差亜惟闁宠桨鑳堕崝锕€顪冮妶鍡楃瑐闁煎啿鐖奸崺濠囧即閵忥紕鍘梺鎼炲劗閺呮稒绂掕缁辨帗娼忛埡浣锋闂佽桨鐒﹂幑鍥极閹剧粯鏅搁柨鐕傛嫹闂傚倸鍊搁崐椋庢濮橆兗缂氱憸宥堢亱闂佸湱铏庨崰鏍不椤栫偞鐓ラ柣鏇炲€圭€氾拷  闂傚倸鍊搁崐鐑芥嚄閼哥數浠氱紓鍌欒兌缁垶銆冮崨鏉戠厺鐎广儱顦崡鎶芥煏韫囨洖校闁诲寒鍓熷铏圭磼濡搫顫岄梺鍦拡閸嬪棝鎯€椤忓浂妯勯梺鍝勬湰濞叉ḿ鎹㈠┑濠勭杸闁哄洨濮烽悰銉╂⒒娴e搫甯跺鐟帮攻缁傚秴饪伴崼姘e亾閺冨牆绀冩い蹇庣娴滈箖鏌ㄥ┑鍡涱€楀褜鍠栭湁闁绘ɑ鐟ョ€氼喚绮绘ィ鍐╃厱妞ゆ劑鍊曢弸搴ㄦ煟韫囧鍔滈柕鍥у瀵潙螣閸濆嫬袝婵$偑鍊戦崹娲偡閳哄懎绠栭柍鈺佸暞閸庣喖鏌曢崶褍绨婚柟鍑ゆ嫹
核心提示:特性可设定私有缓存或公共缓存,提高效率可自由选择使用 Stream 组件或 fso 组件支持自定义文件编码可保存文件属性Name文本,ASP通用模板类,该模板名称,主要用于使用公共缓存时区分不同模板,从私有缓存载入,当开启并存在公共缓存时,Format文本,文件编码类型

特性
可设定私有缓存或公共缓存,提高效率
可自由选择使用 Stream 组件或 fso 组件
支持自定义文件编码
可保存文件

属性


Name
文本,该模板名称,主要用于使用公共缓存时区分不同模板。


Format
文本,文件编码类型,可设置值。


Object
文本,使用组件,可设置值:


Stream
FSO

PublicCache
布尔值,使用公共缓存,开启时模板文件将保存到application对象,其他引用此模板类的对象设置相同Name值并同样打开公共缓存即可从缓存读取。(Load方法)


PRivateCache
布尔值,使用私有缓存,开启时模板文件将保存到对象内部变量,同一引用此模板类的对象可读取。(Load方法)


Direction
文本,模板文件所在目录,前后无需斜杠或反斜杠,如:template/default


File
文本,模板文件名,前边无需斜杠或反斜杠,如:default.html


SaveDirection
文本,保存文件所在目录,前后无需斜杠或反斜杠,如:html/default


SaveFile
文本,保存文件名,前边无需斜杠或反斜杠,如:default.html

对象


Code
文本,当前文本,使用SetVar方法时对此对象进行替换,使用Load方法时将模板重载到此对象


Storage
文本,已保存文本,使用SaveFront或SaveLast方法时将Code对象中文本保存到此对象的开头或结尾,可用于循环后得到所有代码

方法


ClearCache
清除公共缓存和私有缓存(强制从文件重载模板)


ClearPublicCache
清除公共缓存


ClearPrivateCache
清除私有缓存


ClearCode
清除Code对象


ClearStorage
清除Storage对象


SaveFront
将当前Code对象中文本保存到Storage对象开头


SaveLast
将当前Code对象中文本保存到Storage对象结尾


SaveCode
将当前Code对象中文本保存到文件


SaveStorage
将当前Storage对象中文本保存到文件


SetVar
对当前Code对象中文本进行替换
参数:需要被替换的文本,欲替换后的文本


Load
将模板文件载入Code对象,当开启并存在私有缓存时,从私有缓存载入,当开启并存在公共缓存时,从公共缓存载入,若无缓存则从文件载入

内部变量


ccStrPath
默认根目录


ccStrCookieName
默认Application对象名前缀

代码


Class ccClsTemplate

  Private ccStrCode,ccStrStorage
  Private ccStrCacheCode
  Private ccBlnPublicCache,ccBlnPrivateCache
  Private ccStrName,ccStrCookieName
  Private ccStrDirection,ccStrSaveDirection,ccStrFile,ccStrSaveFile,ccStrPath
  Private ccObjStream,ccObjFSO,ccStrFormat,ccIntObject,ccObjText,ccIntFormat

  Private Sub Class_Initialize
   ccStrName = "default"   '默认名称
   ccBlnPublicCache = False
   ccBlnPrivateCache = False
   ccStrFile = "cache.html"
   ccStrSaveFile = "save_cache.html"
   ccStrCookieName = "ccClass_Template"  'Application对象名前缀
   ccStrFormat = "UTF-8"   'UTF-8|ASCII|GB2312|BIG5
   ccIntFormat = -1
   ccIntObject = 1     '默认读取/保存模板组件 1:ADODB.Stream 2:FSO
   ccStrPath = Server.MapPath("./")&"\"  '默认根路径
  End Sub

  Public Property Let Name(ccStrName_in)
   ccStrName = LCase(Trim(ccStrName_in))
  End Property

  Public Property Let Format(ccStrFormat_in)
   ccStrFormat = ccStrFormat_in
   If InStr(LCase(Trim(ccStrFormat_in)),"utf") > 0 Then
    ccIntFormat = -1
   Else
    ccIntFormat = 0
   End If
  End Property

  Public Property Let Object(ccStrObject_in)
   ccStrObject_in = LCase(Trim(ccStrObject_in))
   If InStr(ccStrObject_in,"fso") > 0 Then
    ccIntObject = 2
   Else
    ccIntObject = 1
   End If
  End Property

  Public Property Let PublicCache(ccBlnPublicCache_in)
   If ccBlnPublicCache_in = True Then
    ccBlnPublicCache = True
   Else
    ccBlnPublicCache = False
   End If
  End Property

  Public Property Let PrivateCache(ccBlnPrivateCache_in)
   If ccBlnPrivateCache_in = True Then
    ccBlnPrivateCache = True
   Else
    ccBlnPrivateCache = False
   End If
  End Property

  Public Property Let Direction(ccStrDirection_in)
   ccStrDirection = ccStrDirection_in
  End Property

  Public Property Let File(ccStrFile_in)
   If ccStrFile_in <> "" Then
    ccStrFile = ccStrFile_in
   End If
  End Property

  Public Property Let SaveDirection(ccStrSaveDirection_in)
   ccStrSaveDirection = ccStrSaveDirection_in
  End Property

  Public Property Let SaveFile(ccStrSaveFile_in)
   If ccStrSaveFile_in <> "" Then
    ccStrSaveFile = ccStrSaveFile_in
   End If
  End Property

  Public Property Get Code
   Code = ccStrCode
  End Property

  Public Property Get Storage
   Storage = ccStrStorage
  End Property

  Public Sub ClearCache
   Call ClearPrivateCache
   Call ClearPublicCache
  End Sub

  Public Sub ClearPrivateCache
   ccStrCacheCode = ""
  End Sub

  Public Sub ClearPublicCache
   Application(ccStrCookieName&ccStrName) = ""
  End Sub

  Public Sub ClearStorage
   ccStrStorage = ""
  End Sub

  Public Sub ClearCode
   ccStrCode = ""
  End Sub

  Public Sub SaveFront
   ccStrStorage = ccStrCode & ccStrStorage
  End Sub

  Public Sub SaveLast
   ccStrStorage = ccStrStorage & ccStrCode
  End Sub

  Public Sub SaveCode
   Call SaveToFile(1)
  End Sub

  Public Sub SaveStorage
   Call SaveToFile(2)
  End Sub

  Public Sub SetVar(ccStrTag_in,ccStrValue_in)
   ccStrCode = RePlace(ccStrCode,ccStrTag_in,ccStrValue_in)
  End Sub

  Private Sub SaveToFile(ccIntCode_in)
   Dim ccStrSaveCode
   If ccIntCode_in = 1 Then
    ccStrSaveCode = ccStrCode
   Else
    ccStrSaveCode = ccStrStorage
   End If
   If ccIntObject = 1 Then
    Set ccObjStream = Server.CreateObject("ADODB.Stream")
    With ccObjStream
     .Type = 2
     .Mode = 3
     .Open
     .Charset = ccStrFormat
     .Position = ccObjStream.Size
     .WriteText ccStrSaveCode
     .SaveToFile ccStrPath & ccStrSaveDirection & "\" & ccStrSaveFile,2
     .Close
    End With
    Set ccObjStream = Nothing
   Else
    Set ccObjFSO = CreateObject("Scripting.FileSystemObject")
    If ccObjFSO.FileExists(ccStrPath & ccStrSaveDirection & "\" & ccStrSaveFile) = True Then
     ccObjFSO.DeleteFile(ccStrPath & ccStrSaveDirection & "\" & ccStrSaveFile)
    End If
    Set ccObjText = ccObjFSO.OpenTextFile(ccStrPath & ccStrSaveDirection & "\" & ccStrSaveFile,2,True,ccIntFormat)
    ccObjText.Write ccStrSaveCode
    Set ccObjText = Nothing
    Set ccObjFSO = Nothing
   End If
   ccStrSaveCode = ""
  End Sub

  Public Sub Load
   ccStrCode = ""
   If ccBlnPrivateCache = True Then
    If ccFncIsEmpty(ccStrCacheCode) = False Then
     ccStrCode = ccStrCacheCode
     Exit Sub
    End If
   End If
   If ccBlnPublicCache = True Then
    If ccFncIsEmpty(Application(ccStrCookieName&ccStrName)) = False Then
     ccStrCode = Application(ccStrCookieName&ccStrName)
     Exit Sub
    End If
   End If
   If ccIntObject = 1 Then
    Set ccObjStream = Server.CreateObject("ADODB.Stream")
    With ccObjStream
     .Type = 2
     .Mode = 3
     .Open
     .Charset = ccStrFormat
     .Position = ccObjStream.Size
     .LoadFromFile ccStrPath & ccStrDirection & "\" & ccStrFile
     ccStrCode = .ReadText
     .Close
    End With
    Set ccObjStream = Nothing
   Else
    Set ccObjFSO = CreateObject("Scripting.FileSystemObject")
    If ccObjFSO.FileExists(ccStrPath & ccStrDirection & "\" & ccStrFile) = True Then
     Set ccObjText = ccObjFSO.OpenTextFile(ccStrPath & ccStrDirection & "\" & ccStrFile,1,False,ccIntFormat)
     ccStrCode = ccObjText.ReadAll
     Set ccObjText = Nothing
    End If
    Set ccObjFSO = Nothing
   End If
   If ccBlnPrivateCache = True Then
    ccStrCacheCode = ccStrCode
   End If
   If ccBlnPublicCache = True Then
    Application(ccStrCookieName&ccStrName) = ccStrCode
   End If
End Sub

End Class

Function ccFncIsEmpty(ByRef ccStrValue_in)
  If IsNull(ccStrValue_in) Or IsEmpty(ccStrValue_in) Or ccStrValue_in = "" Then
   ccFncIsEmpty = True
  Else
   ccFncIsEmpty = False
  End If
End Function


实例


模板文件内容

<#test#>

asp程序代码


Dim objTemplate
Set objTemplate = New ccClsTemplate
objTemplate.Name = "Test"
objTemplate.Format = "UTF-8"
'开启缓存
objTemplate.PublicCache = True
objTemplate.PrivateCache = True
'设置模板目录和文件名
objTemplate.Direction = "test"
objTemplate.File = "test.html"
'设置保存文件目录和文件名
objTemplate.SaveDirection = "test"
objTemplate.SaveFile = "test3.html"
'载入模板
Call objTemplate.Load
'进行文本替换
Call objTemplate.SetVar("<#test#>","Hello world.")
'将文本保存至Storage暂存
Call objTemplate.SaveLast
'重新载入模板,此时将从私有缓存重新装载,提高效率
Call objTemplate.Load
'替换为其他值
Call objTemplate.SetVar("<#test#>"," By Cloudream.")
'保存至Storage结尾暂存
Call objTemplate.SaveLast
'保存Code至文件
Call objTemplate.SaveCode
Response.Write objTemplate.Storage

Set objTemplate = Nothing


显示结果


Hello world. By Cloudream.

保存文件结果


By Cloudream.

Tags:ASP 通用 模板

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接