ASP通用模板類

來源:互聯網
上載者:User
文章目錄
  • 特性
  • 屬性
  • 對象
  • 方法
  • 內部變數
  • 代碼
  • 執行個體
適合存在較少迴圈的模板。

未實現內部迴圈,需要使用Regex,較浪費資源和時間,如需使用可參考這篇文章.

特性

可設定私人緩衝或公用緩衝,提高效率
可自由選擇使用 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.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.