|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
国内有些大的CRM厂商的ASP就写得不错.无论是概念还是它里面用JAVASCRIPT的能力.并不是说现在的程序员用了ASP.NET来写程序就可以说自己高档了静态 ASP 自己不撑持静态包括文件,如今的静态包括是经由过程 FSO 把被包括的文件兼并到主文件里再运转。以下也有把形如 <!--#include file="filename.asp" --> 的通俗包括文件体例称作“传统援用”,用函数完成的静态包括文件称作“静态援用”。罕见的法式以下:
Function include(filename)
Dim re,content,fso,f,aspStart,aspEnd
set fso=CreateObject("Scripting.FileSystemObject")
set f=fso.OpenTextFile(server.mappath(filename))
content=f.ReadAll
f.close
set f=nothing
set fso=nothing
set re=new RegExp
re.pattern="^\s*="
aspEnd=1
aspStart=inStr(aspEnd,content,"<%")+2
do while aspStart>aspEnd+1
Response.write Mid(content,aspEnd,aspStart-aspEnd-2)
aspEnd=inStr(aspStart,content,"%\>")+2
Execute(re.replace(Mid(content,aspStart,aspEnd-aspStart-2),"Response.Write "))
aspStart=inStr(aspEnd,content,"<%")+2
loop
Response.write Mid(content,aspEnd)
set re=nothing
End Function
利用典范:include("youinc.asp")
但这处函数在处置补包括的文件中还有包括文件时就不灵了。我在以上函数的基本上改善出来以下函数,在被包括文件中还有通俗的包括文件 <!--#include file="filename.asp" --> 也可正常运转。
Function includeconvert(oRegExp, strFilename, strBlock)
Dim incStart, incEnd, match, oMatches, str, code
'用提取ASP代码的不异体例提掏出include 局部的文件名,其他局部原样输入
code = ""
incEnd = 1
incStart = InStr(incEnd,strBlock,"<!--#include ") + 13 '要找个方针字符串<!--#include 正好是13个字符,所以要+13
Do While incStart>incEnd+12 '两个援用间距最小就是一连的--><--#,incStart是从<!--#include起数13个字符,所以要比前一个incEnd要最少多 13-1 失掉的>incEnd+12的前提
str = Mid(strBlock,incEnd,incStart-incEnd-13)
str = WordStr(str, """", """""") '把单个双引号换成两个双引号
str = WordStr(str, VbCr, "")
str = WordStr(str, VbLf, "")
str = WordStr(str, VbCrLf, "")
code = code & VbCrLf & "Response.Write """ & str & """"
incEnd=InStr(incStart,strBlock,"-->")+3
oRegExp.pattern="(\w+)=""([^""]+)""" '婚配 file="filename.ext" 或 virtual="virtualname.ext",捕获类型及文件名两个子串
Set oMatches = oRegExp.Execute(Mid(strBlock,incStart,incEnd-incStart-3))
Set match = oMatches(0) '肯定只要一组捕获时,要失掉这一组婚配的子串,可以如许做,省去用 For Each match In oMatches …… Next
code = code & include(Mid(strFilename, 1, InStrRev(strFilename, "/")) & match.SubMatches(1)) 'Mid(filename, 1, InStrRev(filename, "/")) 是在被援用的子文件名有途径时,把途径提掏出来,加在子文件中传统援用的文件名后面,以找到准确的翻开文件途径,由于静态援用时的文件途径是绝对主文件而言的。要第二个婚配子串用SubMatches(1)
incStart = InStr(incEnd,strBlock,"<!--#include ")+13
Loop
str = Mid(strBlock,incEnd)
str = WordStr(str, """", """""") '把单个双引号换成两个双引号
str = WordStr(str, VbCr, "")
str = WordStr(str, VbLf, "")
str = WordStr(str, VbCrLf, "")
code = code & VbCrLf & "Response.Write """ & str & """"
includeconvert = code
End Function
Function include(filename)
Dim re, content, fso, f, aspStart, aspEnd, code
Set fso=CreateObject("scripting.FileSystemObject")
Set f=fso.OpenTextFile(Server.MapPath(filename))
content=f.ReadAll
f.close
Set f=nothing
Set fso=nothing
code = ""
aspEnd=1
aspStart=InStr(aspEnd,content,"<%")+2
Set re=new RegExp
Do While aspStart>aspEnd+1
'传统援用<!--#inclde 一定是在ASP代码段之外的,所以先转。
code = code & includeconvert (re, filename, Mid(content,aspEnd,aspStart-aspEnd-2))
aspEnd=InStr(aspStart,content,"%\>")+2
re.pattern="^\s*=" '这段正则交换本来是把 <% = str % > 换回成尺度的 <%Response.Write str % >
code = code & VbCrLf & re.replace(Mid(content,aspStart,aspEnd-aspStart-2),"Response.Write ") 'ASP块后面再加回车换行,以免毗连块之间多个 Response.Write在统一行的毛病
aspStart=InStr(aspEnd,content,"<%")+2
Loop
code = code & includeconvert (re, filename, Mid(content,aspEnd))
Set re=nothing
include = code
End Function
便利起见,以上函数终究前往的是整合了包括文件的全部 ASP 代码,利用时还要再用 Execute 履行之,即便用时需求:Execute(include("file.asp"))。
以上函数对被包括文件与主文件统一途径时测试经由过程,未对被包括文件与主文件途径分歧的情形做进一步容错,工夫无限,接待有乐趣的伴侣提出定见和改善。
SQL Server是基于服务器端的中型的数据库,可以适合大容量数据的应用,在功能上管理上也要比Access要强得多。在处理海量数据的效率,后台开发的灵活性,可扩展性等方面强大。 |
|