千家信息网

ASP.NET MVC4之js和css文件合并功能的示例分析

发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,小编给大家分享一下ASP.NET MVC4之js和css文件合并功能的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧
千家信息网最后更新 2025年01月20日ASP.NET MVC4之js和css文件合并功能的示例分析

小编给大家分享一下ASP.NET MVC4之js和css文件合并功能的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

MVC4增加了一些新功能,接下来,我们来研究下MVC4中的新增功能,我们在新建一个MVC4项目的时候,会发现在项目下多出了一个App_Start文件夹,文件夹下面有4个文件,BundleConfig.cs,FilterConfig.cs,RouteConfig.cs,WebApiConfig.cs,其中BundleConfig.cs文件就是我们这一节要讲的的文件。
众所周知,浏览器在向服务器发送请求的时候,请求的文件连接数量是有限制的。使用BundleConfig可以将多个文件请求和并成一个请求,去除文件中的一些注释,空白,压缩文件的大小,自动合并压缩优化代码,缩短响应时间,提高网页速度,起到优化网站的作用。
1.定义分组
创建MVC4项目后,我们会在global.asax文件中的Application_Start()方法中看到如下代码,起到注册作用
BundleConfig.RegisterBundles(BundleTable.Bundles);
BundleConfig.cs代码:

public class BundleConfig  {   // 有关 Bundling 的详细信息,请访问 http://go.microsoft.com/fwlink/?LinkId=254725   public static void RegisterBundles(BundleCollection bundles)   {    bundles.Add(new ScriptBundle("~/bundles/jquery").Include(       "~/Scripts/jquery-{version}.js"));     bundles.Add(new ScriptBundle("~/bundles/jqueryui").Include(       "~/Scripts/jquery-ui-{version}.js"));     bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(       "~/Scripts/jquery.unobtrusive*",       "~/Scripts/jquery.validate*"));     // 使用 Modernizr 的开发版本进行开发和了解信息。然后,当你做好    // 生产准备时,请使用 http://modernizr.com 上的生成工具来仅选择所需的测试。    bundles.Add(new ScriptBundle("~/bundles/modernizr").Include(       "~/Scripts/modernizr-*"));     bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site.css"));     bundles.Add(new StyleBundle("~/Content/themes/base/css").Include(       "~/Content/themes/base/jquery.ui.core.css",       "~/Content/themes/base/jquery.ui.resizable.css",       "~/Content/themes/base/jquery.ui.selectable.css",       "~/Content/themes/base/jquery.ui.accordion.css",       "~/Content/themes/base/jquery.ui.autocomplete.css",       "~/Content/themes/base/jquery.ui.button.css",       "~/Content/themes/base/jquery.ui.dialog.css",       "~/Content/themes/base/jquery.ui.slider.css",       "~/Content/themes/base/jquery.ui.tabs.css",       "~/Content/themes/base/jquery.ui.datepicker.css",       "~/Content/themes/base/jquery.ui.progressbar.css",       "~/Content/themes/base/jquery.ui.theme.css"));   }  }

BundleCollection是一个集合,用于将绑定规则添加到集合中,使用Add方法.
bundles.Add(new ScriptBundle("~/bundles/jquery").Include( "~/Scripts/jquery-{version}.js"));
new ScriptBundle("~/bundles/jquery")定义一个分组名称,Include表示这个分组下具体包括的文件。
version参数代表版本号 ,*代表所有,这两个是可以理解为通配符。
以上代码表示创建一个~/bundles/jquery分组,该分组指向的文件为scripts文件夹下的jquery-1.7.1.js文件。
如果scripts文件夹下有jquery-1.7.1.js,jquery-1.6.1.js,则会指向这两个文件。

同样,bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site.css"));表示创建了一个~/Content/css分组,指向~/Content/site.css文件.

2.使用分组
分组已经定义好,我们接下演示怎样使用。
如果在页面中使用scripts,可以使用@Scripts.Render("~/bundles/jquery")方法,参数为分组名称
如果在页面中使用css,可以使用@Styles.Render("~/Content/css")方法,参数为分组名称.
可以看下VIEWS文件夹下的Shard文件夹的_Layout.cshtml文件

        @ViewBag.Title  @Styles.Render("~/Content/css")  @Scripts.Render("~/bundles/modernizr")    @RenderBody()   @Scripts.Render("~/bundles/jquery")  @RenderSection("scripts", required: false)  

运行项目后,可以查看页面源代码,效果如下

3.合并请求
接下来我们通过分组将请求多个文件合并成请求一个,可以使用如下两种方法来实现
1).将web.config中的编译调试debug设为false
2).在BundleConfig中的方法末尾添加 BundleTable.EnableOptimizations = true;
再次运行页面,可以看到生成如下代码
src="/bundles/jquery?v=wBUqTIMTmGl9Hj0haQMeRbd8CoM3UaGnAwp4uDEKfnM1"
?前面是分组名称,后面是多个文件合并后生成的哈希码

4.对比效果
我们在火狐下用firebug查看合并前后的对比效果,可以对比下请求的文件大小,时间等方面的差别还是挺大的
压缩合并前:

压缩合并后:

注:默认情况下 BundleTable.Bundles会过滤掉后缀名为这些的文件,intellisense.js、-vsdoc.js、.debug.js、.min.js、.min.css,
当加载后缀名为这些的文件,将显示空白。
可以用如下方法去除对这些文件过滤限制

BundleTable.Bundles.IgnoreList.Clear(); BundleTable.Bundles.IgnoreList.Ignore(".min.js", OptimizationMode.Always); //BundleTable.Bundles.IgnoreList.Ignore("-vsdoc.js", OptimizationMode.Always); //BundleTable.Bundles.IgnoreList.Ignore(".debug.js", OptimizationMode.Always);

我们通过分组将请求多个文件合并成请求一个,压缩文件的大小,自动合并压缩优化代码,缩短响应时间,提高网页速度。

以上是"ASP.NET MVC4之js和css文件合并功能的示例分析"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

文件 分组 方法 代码 文件夹 名称 多个 页面 项目 功能 参数 大小 指向 效果 时间 篇文章 并成 示例 分析 接下来 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 计算机网络技术的实现主要涉及 锐捷网络安全专员工资 传奇dbc数据库导出 网络安全更新维护文档 检察院招计算机网络技术员吗 网络安全大赛的直播 沈阳涉密软件开发资质公司 马云说互联网科技你刚碰吗 江苏边缘融合服务器供应商云空间 不错的云服务器代理平台 从事网络安全技术工作有前途吗 法国网络安全现状 常熟品牌网络技术有哪些 宠物网络技术怎么样 海口考研网络安全专业分数 第七届国家网络安全周ppt 成都零橙网络技术 苹果应用软件开发者有啥风险 民权网络安全检查 国家网络安全周闭幕式几点 国内顶尖的网络安全企业 网络安全 市场分析 数据库订单总额 天津华为服务器虚拟化迁移云主机 计算机网络安全前沿技术 web网络安全毕设 无线通信网络技术心得 爱刮刮网络技术有限公司 美国 服务器 流量 网络技术对小学生的影响
0