• ASP静态HTML(局部)生成类


    快速导读:
    ASP生成HTML静态的方法很多,类也很多,但是下面这个从Tsys CMS里面提取出的类,我个人认为是非常经典的,值得研究ASP的朋友学习和改进。

    知识必备:
    需要一定ASP基础,懂得ASP类(Class)的使用

    适用范围:
    适合html大文档需要部分更新某个局部区域的情况

    代码与讲解:

    以下为ASP内容:

    Class Fox_TemplateClass
        Public FilePath                             '模板文件
        Private Template                            '模板暂存变量
        Public StartElement                         '元素开始标签
        Public EndElement                           '元素结束标签
        Public Value                                '插入内容

        Private Fso
        Private Fle
        Private regEx
        Private FileState                            '文件状态

        Private Sub Class_Initialize
            FileState=False
            FilePath=""
            Template=""
            StartElement=""
            EndElement=""
            Set regEx = New RegExp
                With regEx
                    .Multiline = True
                    .IgnoreCase = True
                    .Global = True
                End With
            Set Fso = Server.CreateObject("Scripting.FileSystemObject")
        End Sub

        Private Sub class_Terminate
            FilePath=""
            Template=""
            StartElement=""
            EndElement=""
            Set regEx=Nothing
            Set Fle=Nothing
            Set Fso=Nothing
        End sub

        Private Function FilterStr(str)
            FilterStr=str
            If str="" Or IsNull(FilterStr) Then
                FilterStr=""
            Else
                FilterStr=Replace(FilterStr,"\","\\")
                FilterStr=Replace(FilterStr,"(","\(")
                FilterStr=Replace(FilterStr,")","\)")
                FilterStr=Replace(FilterStr,"*","\*")
                FilterStr=Replace(FilterStr,"?","\?")
                FilterStr=Replace(FilterStr,"{","\{")
                FilterStr=Replace(FilterStr,"}","\}")
                FilterStr=Replace(FilterStr,".","\.")
                FilterStr=Replace(FilterStr,"+","\+")
                FilterStr=Replace(FilterStr,"[","\[")
                FilterStr=Replace(FilterStr,"]","\]")
            End If
        End Function

        '//设置模板文件路径
        Public Function OpenTemplate(mFilePath)
            Set Fle=Fso.OpenTextFile(mFilePath,1)
            Template=Fle.ReadAll
            Fle.Close
            FileState=True
            FilePath=mFilePath
        End Function

        '//规换模版元素,元素标签一般格式为:"<!-元素标签-开始--><!--元素标签-结束-->",你当然也可以自义
        '//无素标签不区分大小写
        Public Function ReplaceTemplate()
            If (Not FileState) Or Template="" Or StartElement="" Or EndElement="" Then
                Exit Function
            End If
            Dim strPatrn
                strpatrn=FilterStr(StartElement) & "[\S\s]*?" & FilterStr(EndElement)
            regEx.Pattern = strPatrn
            Template=regEx.Replace(Template,StartElement & vbCrLf & Value & vbCrLf & EndElement)
        End Function

        '//保存新的模板内容
        Public Function Save()
            If (Not FileState) Then
                Exit Function
            End If
            Set Fle=Fso.OpenTextFile(FilePath,2)
            Fle.Write Template
            Fle.Close
        End Function

        '//另存模板内容
        Public Function SaveAs(mFilePath)
            If (Not FileState) Then
                Exit Function
            End If
            Set Fle=Fso.OpenTextFile(mFilePath,2,1)
            Fle.Write Template
            Fle.Close
        End Function
    End Class

    这个类用法比较特别,它采用手动更新方式进行,自动进行开始标签<!--Template Start-->和结束标签<!--Template End-->的识别,然后对开始标签和结束标签框定的区域进行部分更新,最后生成HTML。

    用法实例: 

    以下为引用的内容:

    Dim TClass
    Set TClass=New Fox_TemplateClass
    TClass.OpenTemplate("e:/t.htm")
    TClass.StartElement="<!--资源标题标识-开始-->"
    TClass.EndElement="<!--资源标题标识-结束-->"
    TClass.Value="这是资源标题的替换内容"
    TClass.ReplaceTemplate()

    TClass.StartElement="<!--资源内容-开始-->"
    TClass.EndElement="<!--资源内容-结束-->"
    TClass.Value="我将替换成资源的内容"
    TClass.ReplaceTemplate()

    TClass.Save()
    TClass.SaveAs("e:/t1.htm")
    Set TClass=Nothing

  • 相关阅读:
    SQL Server 中关于EXCEPT和INTERSECT的用法
    SQL SERVER 索引中聚集索引分析和Transact-SQL语句优化
    DATEDIFF() 返回2个日期之间的间隔
    CharIndex()
    poj1470 Closest Common Ancestors [ 离线LCA tarjan ]
    2014 蓝桥杯 预赛 c/c++ 本科B组 第九题:地宫取宝(12') [ dp ]
    hdu 2438 Turn the corner [ 三分 ]
    poj 3295 Tautology [ 栈 ]
    hdu 4923 Room and Moor [ 找规律 + 单调栈 ]
    1597: [Usaco2008 Mar]土地购买 [ dp+斜率优化 ] 未完
  • 原文地址:https://www.cnblogs.com/cosiray/p/1551948.html
Copyright © 2020-2023  润新知