加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 站长学院 > Asp教程 > 正文

分享one.asp多项目、函数库、类库 统一为一个版本的方法

发布时间:2023-09-02 13:39:26 所属栏目:Asp教程 来源:
导读:前几天 写的博客 多项目 函数库、类库 统一为一个版本的方法中提到 使用 one.php 将整个项目打包成 一个 php 文件,有网友 让我 整个asp版本的,今天下午抽空写了个 one.asp,使用方式基本一致,这次 增加了路径计算
前几天 写的博客 多项目 函数库、类库 统一为一个版本的方法中提到 使用 one.php 将整个项目打包成 一个 php 文件,有网友 让我 整个asp版本的,今天下午抽空写了个 one.asp,使用方式基本一致,这次 增加了路径计算的功能,可以引用不同路径。
 
举个简单的应用场景,开发一个小的API系统,支持 XML、JSON输出。区别是 基础版(dev/dev.asp)只支持 Access,VIP版本(dev/vip.asp)支持 Access + SQL Server。这样VIP版本就需要在现在的基础上 增加 sqlserver的支持,增加额外的 配置项。开发过程只需要 按正常开发即可。

开发完毕后,通过 one.asp 打包成 index.asp 和 vip.asp 两个版本,整套程序都是一个独立的文件。
 
解析过程:

完整的测试代码 可以 访问:oneasp.rar 下载
 
核心代码 如下:

' ====================================================
 
' 类名:One
 
' 作者:mqycn
 
' 博客:http://www.miaoqiyuan.cn
 
' 源码:http://www.miaoqiyuan.cn/p/one-php
 
' 说明:多项目 函数库、类库 统一为一个版本的方法
 
' ====================================================
 
Class OneAsp
 
  Private FSO
 
  Private Root

  Private Sub Class_Initialize()
 
    Set FSO = Server.CreateObject("Scripting.FileSystemObject")
 
  End Sub

  Private Sub Class_Terminate()
 
    Set FSO = Nothing
 
  End Sub

  Public Function Run(ByVal sourceFile, ByVal saveFile)
 
    Run = "<hr><b>Input:</b>" & sourceFile & "<br><b>Result:</b>" & Save(saveFile, Include(sourceFile))
 
  End Function

  Public Function Include(ByVal path)
 
    Dim tmpPath, tmpItem, arrPath, index
 
    tmpPath = ""
 
    arrPath = Split(path, "/")
 
    For index = 0 To UBound(arrPath) - 1
 
      tmpItem = arrPath(index)
 
      tmpPath = tmpPath & tmpItem & "/"
 
    Next
 
    Include = Parse(tmpPath, arrPath(UBound(arrPath)))
 
  End Function

  Private Function Parse(ByVal root, ByVal fileName)
 
    Call SetRoot(root)
 
    Dim html
 
    html = OpenRead(fileName)
 
    Dim preg, pregResult
 
    Set preg = New Regexp
 
    preg.pattern = "<!--#include file=""([^""]*)""-->"
 
    preg.global = True
 
    preg.ignorecase = True
 
    Dim htmlInclude
 
    Set pregResult = preg.execute(html)
 
    For Each htmlInclude In pregResult
 
      html = Replace(html, htmlInclude, Include(root & htmlInclude.submatches(0)))
 
    Next
 
    Parse = "<% '" & root & fileName & " Start %" & ">" & vbCrLf & html & vbCrLf & "<%  '" & root & fileName & " End %" & ">" & vbCrLf
 
  End Function

  Private Function SetRoot(ByVal rootPath)
 
    If Right(rootPath, 1) <> "/" Then rootPath = rootPath & "/"
 
    Root = rootPath
 
  End Function
 
  Private Function RealPath(ByVal path)
 
    RealPath = Server.Mappath(Root & path)
 
  End Function
 
  Private Function OpenRead(ByVal path)
 
    Dim txtFile
 
    Set txtFile = FSO.OpenTextFile(RealPath(path))
 
    OpenRead = txtFile.ReadAll()
 
    txtFile.close
 
    On Error GoTo 0
 
  End Function

  Public Function Save(ByVal path, ByVal body)
 
    Dim txtFile
 
    Set txtFile = FSO.CreateTextFile(Server.Mappath(path))
 
    txtFile.write body
 
    txtFile.close
 
    Set txtFile = Nothing
 
    Save = path
 
  End Function

End Class
 
使用也非常简单,使用 Call new OneAsp.run(开发版, 打包版),可以 dev.asp 中的所有包含的代码 打包到 index.asp,如果只想获取解析的内容,可以使用 Response.Write Server.Htmlencode(Call new OneAsp.include(开发版))
 
 

(编辑:聊城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章