• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    分享一个好东东,动态Include文件 (Dynamic File Includes)
    早在03年就在蓝色理想上看到过动态Include的文章,当时已经觉得很厉害,但实际应用了一下,不方便而且Include的效果不好.

    后来又在一网站上看到了改进版的,但是也不太好用~~~

    哎,当时我真是觉得有点想放弃ASP了,但是由于公司还是用ASP来开发,我也是没有办法...

    今天,我一定要记住今天~~~在国外的一个网站上我竟然发现了这样一个好东东,太棒了~~~Great works!!!

    以前试的一些动态Include代码,都无法Include一个类,甚至函数~~~又或者Include文件中的Include无法被包含...

    现在这个鬼佬(dselkirk)写的类可以为我们做到这些了~~~
    复制代码 代码如下:


      public include, include_vars 
      set include = new cls_include 

      class cls_include 

        private sub class_initialize() 
          set include_vars = server.createobject("scripting.dictionary") 
        end sub 
        private sub class_deactivate() 
          arr_variables.removeall 
          set include_vars = nothing 
          set include = nothing 
        end sub 

        public default function include(byval str_path) 
          dim str_source 
          if str_path > "" then 
            str_source = readfile(str_path) 
            if str_source > "" then 
              processincludes str_source 
              convert2code str_source 
              formatcode str_source 
              if str_source > "" then 
                if request.querystring("debug") = 1 then 
                  response.write str_source 
                  response.end 
                else 
                  executeglobal str_source 
                  include_vars.removeall 
                end if 
              end if 
            end if 
          end if 
        end function 

        private sub convert2code(str_source) 
          dim i, str_temp, arr_temp, int_len 
          if str_source > "" then 
            if instr(str_source,"%"  ">") > instr(str_source,""  "%") then 
              str_temp = replace(str_source,""  "%","|%") 
              str_temp = replace(str_temp,"%"  ">","|") 
              if left(str_temp,1) = "|" then str_temp = right(str_temp,len(str_temp) - 1) 
              if right(str_temp,1) = "|" then str_temp = left(str_temp,len(str_temp) - 1) 
              arr_temp = split(str_temp,"|") 
              int_len = ubound(arr_temp) 
              if (int_len + 1) > 0 then 
                for i = 0 to int_len 
                  str_temp = trim(arr_temp(i)) 
                  str_temp = replace(str_temp,vbcrlf  vbcrlf,vbcrlf) 
                  if left(str_temp,2) = vbcrlf then str_temp = right(str_temp,len(str_temp) - 2) 
                  if right(str_temp,2) = vbcrlf then str_temp = left(str_temp,len(str_temp) - 2) 
                  if left(str_temp,1) = "%" then 
                    str_temp = right(str_temp,len(str_temp) - 1) 
                    if left(str_temp,1) = "=" then 
                      str_temp = right(str_temp,len(str_temp) - 1) 
                      str_temp = "response.write "  str_temp 
                    end if 
                  else 
                    if str_temp > "" then 
                      include_vars.add i, str_temp 
                      str_temp = "response.write include_vars.item("  i  ")"  
                    end if 
                  end if 
                  str_temp = replace(str_temp,chr(34)  chr(34)  "  ","") 
                  str_temp = replace(str_temp,"  "  chr(34)  chr(34),"") 
                  if right(str_temp,2) > vbcrlf then str_temp = str_temp 
                  arr_temp(i) = str_temp 
                next 
                str_source = join(arr_temp,vbcrlf) 
              end if 
            else 
              if str_source > "" then 
                include_vars.add "var", str_source 
                str_source = "response.write include_vars.item(""var"")" 
              end if 
            end if 
          end if 
        end sub 

        private sub processincludes(str_source) 
          dim int_start, str_path, str_mid, str_temp 
          str_source = replace(str_source,"!-- #","!--#") 
          int_start = instr(str_source,"!--#include") 
          str_mid = lcase(getbetween(str_source,"!--#include","-->")) 
          do until int_start = 0 
            str_mid = lcase(getbetween(str_source,"!--","-->")) 
            int_start = instr(str_mid,"#include") 
            if int_start >  0 then 
              str_temp = lcase(getbetween(str_mid,chr(34),chr(34))) 
              str_temp = trim(str_temp) 
              str_path = readfile(str_temp) 
              str_source = replace(str_source,"!--"  str_mid  "-->",str_path  vbcrlf) 
            end if 
            int_start = instr(str_source,"#include") 
          loop 
        end sub 

        private sub formatcode(str_code) 
          dim i, arr_temp, int_len 
          str_code = replace(str_code,vbcrlf  vbcrlf,vbcrlf) 
          if left(str_code,2) = vbcrlf then str_code = right(str_code,len(str_code) - 2) 
          str_code = trim(str_code) 
          if instr(str_code,vbcrlf) > 0 then 
            arr_temp = split(str_code,vbcrlf) 
            for i = 0 to ubound(arr_temp) 
              arr_temp(i) = ltrim(arr_temp(i)) 
              if arr_temp(i) > "" then arr_temp(i) = arr_temp(i)  vbcrlf 
            next 
            str_code = join(arr_temp,"") 
            arr_temp = vbnull 
          end if 
        end sub 

        private function readfile(str_path) 
          dim objfso, objfile 
          if str_path > "" then 
            if instr(str_path,":") = 0 then str_path = server.mappath(str_path) 
            set objfso = server.createobject("scripting.filesystemobject") 
            if objfso.fileexists(str_path) then 
              set objfile = objfso.opentextfile(str_path, 1, false) 
              if err.number = 0 then 
                readfile = objfile.readall 
                objfile.close 
              end if 
              set objfile = nothing 
            end if 
            set objfso = nothing 
          end if 
        end function 

        private function getbetween(strdata, strstart, strend) 
          dim lngstart, lngend 
          lngstart = instr(strdata, strstart) + len(strstart) 
          if (lngstart > 0) then 
            lngend = instr(lngstart, strdata, strend) 
            if (lngend > 0) then 
              getbetween = mid(strdata, lngstart, lngend - lngstart) 
            end if 
          end if 
        end function 

      end class 
    %>

    上一篇:ASP中使用FileSystemObject时提高性能的方法
    下一篇:解决 JScript 中使用日期类型数据时出现类型错误的问题
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    分享一个好东东,动态Include文件 (Dynamic File Includes) 分享,一个,好,东东,动态,