ASP 通用模板类

模板

  ASP 通用模板类。

  适合存在较少循环的模板。未实现内部循环,需要使用正则表达式,较浪费资源和时间,如需使用可参考这篇文章.

特性
可设定私有缓存或公共缓存,提高效率
可自由选择使用 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.

时间: 2024-10-26 14:05:18

ASP 通用模板类的相关文章

ASP通用模板类

  ASP 通用模板类. 适合存在较少循环的模板.未实现内部循环,需要使用正则表达式,较浪费资源和时间,如需使用可参考这篇文章. 特性 可设定私有缓存或公共缓存,提高效率 可自由选择使用 Stream 组件或 FSO 组件 支持自定义文件编码 可保存文件 属性 Name 文本,该模板名称,主要用于使用公共缓存时区分不同模板. Format 文本,文件编码类型,可设置值. Object 文本,使用组件,可设置值: Stream FSO PublicCache 布尔值,使用公共缓存,开启时模板文件将

ASP通用分页类

分页 一.类的属性.方法 这是一个ASP通用分页类.你可以用它方便的给记录集分页,当然在网上有许多的分页类和分页函数.本分页主要有GetConn.GetRS.SQL.URL.CSSFile.FldName.FldNote.FldWidth.FldAlign.ShowPageType.TleFTColor.TleWidth.PageSize.ShowWidth.Init.Pages.ShowData.Close等属性和方法. 1.GetConn属性:用来获取一个已创建的Connection对象.

asp 通用分页类

<%@LANGUAGE = "VBScript" CODEPAGE="936"%> <%Option Explicit%> <!--#include file="Cls_PageView.asp"--> Class Cls_PageView  Private sbooInitState  Private sstrPageUrl  Private sstrPageVar  Private sstrSql  Pri

创建一个ASP通用分页类

创建|分页 转自"蓝色理想" http://www.blueidea.com/tech/program/2004/1989.asp.ASP分页一直是一个众说纷坛的话题,而且也没有一个太有效的方法.今天在CSDN的BLOG里看到了这个ASP分页类,(http://blog.csdn.net/xiangbo520/archive/2004/09/22/113539.aspx),只是提供了源码,而且源码中部分标签已被作为HTML显示了,想复制下来也不太容易,所有到蓝色理想找到了一篇全面一点的

ASP通用分页类源码

分页 <%'==================================================================='XDOWNPAGE ASP版本'版本 1.00'Code by zykj2000'Email: zykj_2000@163.net'BBS: http://bbs.513soft.net'本程序可以免费使用.修改,希望我的程序能为您的工作带来方便'但请保留以上请息''程序特点'本程序主要是对数据分页的部分进行了封装,而数据显示部份完全由用户自定义,'

创建一个ASP通用分页类(二)代码部分

创建|分页 <%'====================================================================='XDOWNPAGE ASP版本'版本 1.00'Code by zykj2000'Email: zykj_2000@163.net'BBS: http://bbs.513soft.net'本程序可以免费使用.修改,希望我的程序能为您的工作带来方便'但请保留以上请息''程序特点'本程序主要是对数据分页的部分进行了封装,而数据显示部份完全由用户

创建一个ASP通用分页类_ASP CLASS类

从开始学习到使用ASP到现在也写了不少程序了,最令人头痛的是写数据分页,每次都是由于几个变量名或几个参数的不同,因而需要每次都写哪一段冗长而又繁杂的分页代码,代码长了使得程序的可读性变差,容易出差,调试半天也找不出错在哪里,所以慢慢的我开始使用一些网上的提供的分页函数或分页类.的确省事不少,但是通常的函数和类的做法都是就数据显示部分也封装了起来,每次为了达到自己需要的显求效果要去改动函数或者类的本身,所以使用起来也不是怎么方便,自己写的分页改起来已经够复杂了,更不要说别人的了. 所以趁昨天有空自

一个asp模板类

模板 一个从类到实例都有的模板的例子这个类还有很多不完善(比如效率),希望大家共同探讨,高手多多指正.-----------------------------------------------------------------------首先介绍asp中的类:Class对象,要求版本 5.像一些面向对象的语言一样,asp中也提供类的支持,不过功能上不完善.对于本类中使用的加以说明:Initialize 事件:在创建类的实例时发生此事件. Private Sub Class_Initiali

对asp.net1.1开发模板类的一些修改说明

asp.net|模板 本次StringTempletReplet.dll组件更新了一些算法.主要是更依赖内存里静态变量内的数值.做到了在不改变模板的条件下.缓存模板,缓存委托,缓存标签解析数据.但是这会更消耗一些内存. 为了可以动态更换模板,不得不每次检测文件的时间.在这个上消耗了不少时间.也许将来应该去掉动态更换模板的功能,只提供一个通知模板类重新读哪个模板文件的接口. 取消了这个页面 (RetuenString.aspx --接受标签字符串 返回解析结果)毕竟标签不会做成一种脚本语言.这个功