為了更好的進(jìn)行封裝,每個(gè)實(shí)現(xiàn)不同功能的js代碼應(yīng)該有自己的js文件,這樣如果一個(gè)網(wǎng)頁(yè)中引用了多個(gè)js文件,如下
復(fù)制代碼 代碼如下:
script type="text/javascript" src="limit.js">/script>
script type="text/javascript" src="select.js">/script>
script type="text/javascript" src="rating.js">/script>
這樣網(wǎng)頁(yè)會(huì)向服務(wù)器發(fā)送3個(gè)請(qǐng)求,請(qǐng)求3個(gè)js文件,其實(shí)完全沒(méi)有必要發(fā)這么多的請(qǐng)求,一個(gè)足矣,下面就來(lái)介紹如何用Handler實(shí)現(xiàn)
新建一個(gè)HttpHandler
復(fù)制代碼 代碼如下:
public class Handler1 : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{//原文鏈接:blog.csdn.net/bluceyoung
string[] js = context.Request.Url.LocalPath.Substring(1, context.Request.Url.LocalPath.Length - 5).Split('.');
StringBuilder sb = new StringBuilder();
foreach (string j in js)
{
sb.Append(ReadFile(j+".js"));
}
context.Response.Write(CompressStr(sb));
}
private string ReadFile(string fileName)
{
string directory = @"D:\SRC\bluceyoung\";
if (!File.Exists(directory + fileName))
{
return "";
}
string result;
using (FileStream fs = new FileStream(directory + fileName, FileMode.Open))
{
using (StreamReader sr = new StreamReader(fs))
{
result = sr.ReadToEnd();
}
}
return result;
}
private string CompressStr(StringBuilder sb)
{
while (true)
{
int length = sb.Length;
sb.Replace(" ", " ");
if (length == sb.Length)
break;
}
sb.Replace("\r\n", "").Replace("\t", "").Replace("; ", ";").Replace(" }", "}").Replace("} ", "}").Replace(" ;", ";").Replace(" {", "{").Replace("{ ", "{");
return sb.ToString();
}
public bool IsReusable
{
get
{
return false;
}
}
}
配置文件中添加節(jié)點(diǎn)
復(fù)制代碼 代碼如下:
configuration>
system.web>
compilation debug="true" targetFramework="4.0" />
httpHandlers>
add path="*.jsx" verb="*" type="BluceYoung.Handler1"/>
/httpHandlers>!--原文博客:blog.csdn.net/bluceyoung -->
/system.web>
/configuration>
頁(yè)面調(diào)用
復(fù)制代碼 代碼如下:
script src="limit.select.rating.jsx" type="text/javascript">/script>
就這樣,一個(gè)script引用就完成了多個(gè)js文件的請(qǐng)求,并且對(duì)文件進(jìn)行了壓縮處理