• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: 小 中 大 | 推荐给好友 上一篇 | 下一篇

关于通过vbs类处理模板实现代码与界面分离的程序,建议入精华备查。有演示

发布: 2007-6-30 18:56 | 作者: admin | 来源: | 查看: 13次 | 进入软件测试论坛讨论

领测软件测试网 文章标题:vbs类处理模板实现代码与界面分离
‘’作者:yanek
‘’email:[email protected]

本程序通过vbs类处理模板实现代码与界面分离的程序,主要有下面文件组成
index.asp,parse_cls.asp,template.html
下面是代码

1。index.asp 调用vbs类处理模板

<%
‘’作者:yanek
‘’email:[email protected]

‘’---  ---
‘’ index.asp
‘’------  ----
‘’ (c)2000 James Q. Stansfield ([email protected])
‘’ This code is free for use by anyone. It is meant as a learning tool and can be passed along in any format.
option explicit
%>
<!--#INCLUDE FILE="parse_cls.asp"-->
<%
‘’Declare our variables
dim g_oPageGen
‘’Cerate the class object
set g_oPageGen = New parseTMPL
‘’Set the template file
g_oPageGen.TemplateFile = "template.html"
‘’Add some custom tags to the dictionary
g_oPageGen.AddToken "title", "Template Example"
g_oPageGen.AddToken "copyright", "This is mine! All mine!"
g_oPageGen.AddToken "quote", """Tell Jabba I‘’ve got his money!""<br>--Han Solo, Star Wars 1977"
g_oPageGen.AddToken "menu", "Home Page<br>News Page<br>Link Page"
g_oPageGen.AddToken "content", "Welcome To My Home Page... Yadda Yadda Yadda!"
‘’Generate the page
g_oPageGen.GenerateHTML
‘’Destroy our objects
set g_oPageGen = nothing
%>



2。parse_cls.asp  处理模板类文件

<%
‘’作者:yanek
‘’email:[email protected]

‘’---  ---
‘’ parse_cls.asp
‘’ This code is free for use by anyone. It is meant as a learning tool and can be passed along in any format.
class parseTMPL
    ‘’Dimension variables
    private g_sTMPLFILE
    private g_oDict
    private g_bFILE

    private sub class_Initialize
        ‘’Create the Scripting.Dictionary Object,
        ‘’Set the compare mode to 1 so that it is case insensitive.
        ‘’Also flag a boolean file so we know whether our file is there or not.
        set g_oDict = createobject("Scripting.Dictionary")
        g_oDict.CompareMode = 1
        g_bFILE = FALSE
    end sub
    
    private sub class_Terminate
        ‘’Destroy our object.
        set g_oDict = nothing
    end sub
    
    public property let TemplateFile(inFile)
        ‘’A file & path must be specified for the routine to work.
        g_sTMPLFILE = server.mappath(inFile)
    end property
    
    private property get TemplateFile()
        TemplateFile = g_sTMPLFILE
    end property
    
    public sub AddToken(inToken, inValue)
        ‘’This property allows us to set our tokens.
        g_oDict.Add inToken, inValue
    end sub
    
    public sub GenerateHTML
        ‘’This is the main, and only public method of the class.
        ‘’This method will check whether we‘’ve specified a file or not.
        ‘’Check for the files existance if we have specified it.
        ‘’If the file exists we will open it and dumps it‘’s contents into an array.
        ‘’The array is split on VbCrLf to make it more manageable.
        if len(g_sTMPLFILE) > 0 then
            dim l_oFSO, l_oFile, l_arrFile
            set l_oFSO = createobject("Scripting.FileSystemObject")
            if l_oFSO.FileExists(TemplateFile) then
                g_bFILE = TRUE
                set l_oFile = l_oFSO.OpenTextFile(g_sTMPLFILE)
                l_arrFile = split(l_oFile.ReadAll, VbCrLf)
                l_oFile.Close
                set l_oFile = Nothing
            end if
            set l_oFSO = nothing
        else
            ‘’Filename was never passed!
        end if
        ‘’If we have a file, we will prase it line by line
        ‘’by sending each line to ParseTMPL()
        if g_bFILE then
            Dim l_sLine
            for each l_sLine in l_arrFile
                ParseTMPL(l_sLine)
            next
        else
            ‘’Error File Not Found!
        end if
    end sub
    
    private sub ParseTMPL(inLine)
        ‘’This is a reasonably complex piece of code that looks for any text that is bounded by ‘’[%‘’ and ‘’%]‘’...
        ‘’If it finds one it takes the first part of the line up to the ‘’[%‘’ and displays it to the user.
        ‘’It then passes the bounded text to getToken.
        ‘’The it send the text that resides past the ‘’%]‘’ to itself(ParseTMPL), that way it can check for another
        ‘’token on the same line.
        ‘’If the routine doesn‘’t find a ‘’[%‘’ in the line it simply displays it for the user.
        dim l_ia, l_ib, l_sLine, l_sLine2, l_sToken
        l_ia = instr(inLine, "][%")
        if l_ia > 0 then
            l_sLine = left(inLine, l_ia - 1)
            l_ib = instr(inLine, "%]")
            l_sLine2 = mid(inLine, l_ib + 2)
            l_sToken = trim(mid(inLine, l_ia + 2, (l_ib - l_ia - 2)))
            Response.Write(l_sLine & VbCrLf)
            getToken(l_sToken)
            ParseTMPL(l_sLine2)
        else
            Response.Write(inLine & VbCrLf)
        end if
    end sub
    
    private sub getToken(inToken)
        ‘’This routine checks the Dictionary for the text passed to it.
        ‘’If it finds a key in the Dictionary it Display the value to the user.
        ‘’If not, by default it will display the full Token in the HTML source so that you can debug your templates.
        if g_oDict.Exists(inToken) then
            Response.Write(g_oDict.Item(inToken) & VbCrLf)
        else
            Response.Write("<!--[%" & inToken & "%]-->" & VbCrLf)
        end if
    end sub
end class
%>

3.template.html 模板文件

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
    <title>[%TITLE%]</title>
</head>

<body>
<table border="0" width="785" align="center" cellspacing="0" cellpadding="0" class="largetable">
<tr>
    <td rowspan="2" height="100%" width="150" valign="top" align="right">[%MENU%]</td>
    <td valign="top" width="635" class="caption" align="center">[%QUOTE%]</td>
</tr>
<tr>
    <td valign="top" bgcolor="#b0c4de" width="635" class="layout">[%CONTENT%]</td>
</tr>
<tr>
    <td colspan="2" width="785" align="center" class="caption">[%COPYRIGHT%]</td>
</tr>
</table>
</body>
</html>

演示地址:http://www.cnaspol.com/tmpcode/index.asp




延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:[email protected] 电话:010-51297073

软件测试 | 领测国际 | ISTQB | ISTQB官网 | TMMi | TMMi认证 | 国际软件测试工程师认证 | 领测软件测试网