合并网页中的多个script引用实现思路及代码

时间:2023-06-29 09:02:19 

为了更好的进行封装,每个实现不同功能的js代码应该有自己的js文件,这样如果一个网页中引用了多个js文件,如下


<script type="text/javascript" src="limit.js"></script>
<script type="text/javascript" src="select.js"></script>
<script type="text/javascript" src="rating.js"></script>


这样网页会向服务器发送3个请求,请求3个js文件,其实完全没有必要发这么多的请求,一个足矣,下面就来介绍如何用Handler实现
新建一个HttpHandler


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;
}
}
}


配置文件中添加节点


<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>


页面调用


<script src="limit.select.rating.jsx" type="text/javascript"></script>


就这样,一个script引用就完成了多个js文件的请求,并且对文件进行了压缩处理

标签:合并,script引用
0
投稿

猜你喜欢

  • MySQL DDL 引发的同步延迟该如何解决

    2024-01-26 19:44:00
  • Python松散正则表达式用法分析

    2021-03-12 02:51:36
  • Python中文件遍历的两种方法

    2022-01-28 20:34:03
  • python自动化测试通过日志3分钟定位bug

    2021-09-12 10:11:19
  • tensorflow 动态获取 BatchSzie 的大小实例

    2023-03-05 16:56:48
  • Go语言参数传递是传值还是传引用

    2024-02-20 02:32:34
  • Python爬虫入门案例之回车桌面壁纸网美女图片采集

    2022-12-25 19:40:57
  • Asp用正则表达式获取文章中的所有图片地址

    2010-07-17 13:11:00
  • 模式化窗口

    2009-06-18 18:41:00
  • Python程序打包工具py2exe和PyInstaller详解

    2021-04-17 05:04:12
  • Vue之插件详解

    2024-04-30 10:44:57
  • perl 删除数组元素的几种方法小结

    2023-07-14 18:31:11
  • Golang中如何对MySQL进行操作详解

    2024-01-28 23:16:53
  • MySQL CHAR和VARCHAR存储、读取时的差别

    2024-01-22 20:54:58
  • python基础入门学习笔记(Python环境搭建)

    2022-01-12 20:27:48
  • Thinkphp微信公众号支付接口

    2024-05-11 09:16:51
  • 老生常谈 js中this的指向

    2024-04-23 09:29:31
  • python自动化脚本安装指定版本python环境详解

    2022-08-14 11:31:46
  • Python叠加矩形框图层2种方法及效果

    2022-10-09 15:59:53
  • SELECT...INTO的具体用法

    2024-01-29 02:20:43
  • asp之家 网络编程 m.aspxhome.com