mvc bundle功能(1)

现如今都提倡敏捷开发,快速开发,但是再要求速度的同时,还得保证质量!前端我是没办法,毕竟是直接要面向用户的,但是后台,解决方案那就多了,诸如extjs,bootstrap,kendoui,都可以解决。但是使用了这些第三方的东西,我们的后台是漂亮了,效果也炫了,新的问题就来了,大量的引用js、css。

这是我用bootstrap、kendoui搭的一个标准后台,代码非常简洁,但是引用了很多样式和js,加载完这个页面发送了又16个请求,耗时1.36s。

有没有一种方法可以把这些js和css合并起来并且压缩一下呢?这样我们的后台效果不就更好了吗?当然有,.net mvc自带的bundle功能。我们先看使用了该功能之后是什么效果

很明显,请求数减少了,响应时间也减少了,那我们来看看bundle到底是如何实现的。

 1 public class BundleConfig
 2     {
 3         // 有关 Bundling 的详细信息,请访问 http://go.microsoft.com/fwlink/?LinkId=254725
 4         public static void RegisterBundles(BundleCollection bundles)
 5         {
 6             bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
 7                         "~/assets/global/plugins/jquery-1.11.0.min.js"));
 8
 9
10             // The Kendo JavaScript bundle
11             bundles.Add(new ScriptBundle("~/bundles/kendo").Include(
12                     "~/Scripts/kendo/kendo.all.min.js", // or kendo.all.* if you want to use Kendo UI Web and Kendo UI DataViz
13                     "~/Scripts/kendo/cultures/kendo.culture.zh-CN.min.js",
14                     "~/Scripts/kendo/kendo.aspnetmvc.min.js"
15                     ));
16
17             // Add CSS bundle
18             bundles.Add(new StyleBundle("~/bundles/upcss").IncludeDirectory("~/css/", "*.css"));
19
20             // Add JS bundle
21             bundles.Add(new ScriptBundle("~/bundles/upjs").Include("~/js/jquery.js"
22                                                         , "~/js/vendor/jquery.ui.widget.js"
23                                                         , "~/js/tmpl.js"
24                                                         , "~/js/load-image.js"
25                                                         , "~/js/canvas-to-blob.js"
26                                                         , "~/js/bootstrap.js"
27                                                         , "~/js/bootstrap-image-gallery.js"
28                                                         , "~/js/jquery.iframe-transport.js"
29                                                         , "~/js/jquery.fileupload.js"
30                                                         , "~/js/jquery.fileupload-fp.js"
31                                                         , "~/js/jquery.fileupload-ui.js"
32                                                         , "~/js/locale.js"));
33             bundles.Add(new ScriptBundle("~/bundles/upmain").IncludeDirectory("~/js/main", "*.js"));
34
35
36
37             // The Kendo CSS bundle
38             bundles.Add(new StyleBundle("~/Content/kendocss").Include(
39                     "~/Content/kendo.common-bootstrap.min.css",
40                     "~/Content/kendo.bootstrap.min.css",
41                     "~/Content/kendo.dataviz.min.css"
42                     ));
43
44             // The Kendo CSS bundle
45             bundles.Add(new Bundle("~/Content/kendo/css").Include(
46                     "~/Content/kendo/kendo.common-bootstrap.min.css",
47                     "~/Content/kendo/kendo.bootstrap.min.css",
48                     "~/Content/kendo/kendo.dataviz.min.css"
49                     ));
50
51
52             bundles.Add(new ScriptBundle("~/bundles/jqueryui").Include(
53                         "~/Scripts/jquery-ui-{version}.js"));
54
55             bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
56                         "~/Scripts/jquery.unobtrusive*",
57                         "~/Scripts/jquery.validate*"));
58
59             // 使用 Modernizr 的开发版本进行开发和了解信息。然后,当你做好
60             // 生产准备时,请使用 http://modernizr.com 上的生成工具来仅选择所需的测试。
61             bundles.Add(new ScriptBundle("~/bundles/modernizr").Include(
62                         "~/Scripts/modernizr-*"));
63
64             bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site.css"));
65
66             bundles.Add(new StyleBundle("~/Content/themes/base/css").Include(
67                         "~/Content/themes/base/jquery.ui.core.css",
68                         "~/Content/themes/base/jquery.ui.resizable.css",
69                         "~/Content/themes/base/jquery.ui.selectable.css",
70                         "~/Content/themes/base/jquery.ui.accordion.css",
71                         "~/Content/themes/base/jquery.ui.autocomplete.css",
72                         "~/Content/themes/base/jquery.ui.button.css",
73                         "~/Content/themes/base/jquery.ui.dialog.css",
74                         "~/Content/themes/base/jquery.ui.slider.css",
75                         "~/Content/themes/base/jquery.ui.tabs.css",
76                         "~/Content/themes/base/jquery.ui.datepicker.css",
77                         "~/Content/themes/base/jquery.ui.progressbar.css",
78                         "~/Content/themes/base/jquery.ui.theme.css"));
79         }
80     }

首先需要首先需要配置Bundle

 1 public class MvcApplication : System.Web.HttpApplication
 2     {
 3         protected void Application_Start()
 4         {
 5             AreaRegistration.RegisterAllAreas();
 6
 7             WebApiConfig.Register(GlobalConfiguration.Configuration);
 8             FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
 9             RouteConfig.RegisterRoutes(RouteTable.Routes);
10             BundleConfig.RegisterBundles(BundleTable.Bundles);
11             AuthConfig.RegisterAuth();
12         }
13     }

再全局注册Bundles

时间: 2024-11-05 02:21:34

mvc bundle功能(1)的相关文章

mvc bundle功能(2)

配置好Bundle,注册好之后,再是调用 1 <head> 2 <meta charset="utf-8"> 3 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 4 <meta name="viewport" content="width=device-width, initial-scale=1">

Asp.net MVC Bundle 的使用与扩展

一.Asp.net 自带Bundle的使用: 1. 在Globale中注册与配置 BundleConfig.RegisterBundles(BundleTable.Bundles); public class BundleConfig { // For more information on Bundling, visit http://go.microsoft.com/fwlink/?LinkId=254725 public static void RegisterBundles(Bundle

MVC bundle(包扎)CSS或是JS文件

以前写asp.net网页时,会在<head>节点中引用很多样式文件或是javascript文件,如下图左大括号的引用语句. 现在在MVC应用程序中,可以使用使用Bundle来捆一起, 在Solution Explorer窗口应用程序下,找到App_Start目录.在此目录下创建一个类,命名为“BundleConfig.cs” 并修改namespace: Insus.NET 上图中的#11行的蓝下划线的名称,将就是以View应用的名称.接下来,我们打开Global.asax.cs文件,分三步,第

MVC 区域功能

因为MVC项目是要求都放在固定的文件夹,所以,当项目大的时候,会很不方便管理,所以微软引入的区域的功能 使用方法: 在项目上右击--添加--区域 就会出现Areas的文件夹,里面就是子MVC 渲染: Html.RenderPartial("About");  //只是把About的视图(也就是HTML页)渲染(嵌套)到Index页 Html.RenderAction("About");  //是讲控制器的Action也渲染到Index页

ASP.NET Core - ASP.NET Core MVC 的功能划分

概述 大型 Web 应用比小型 Web 应用需要更好的组织.在大型应用中,ASP.NET MVC(和 Core MVC)所用的默认组织结构开始成为你的负累.你可以使用两种简单的技术来更新组织方法并及时跟进不断增长的应用程序. Model-View-Controller (MVC) 模式相当成熟,即使在 Microsoft ASP.NET 空间中亦是如此.第一版 ASP.NET MVC 在 2009 年推出,并且在今年夏初全面启动了 ASP.NET Core MVC 平台.至今,随着 ASP.NE

Spring MVC项目功能不完全指北

Spring MVC角色 Spring MVC是一款优秀的控制器框架,我们基于Servlet的思想基础,使用Spring MVC是一件比较简单的事情.只是Spring MVC会实现很多细节化的东西,使得开发的效率很高.Serlvet只是粗浅的处理了HTTP请求,其中并没有牵扯到复杂的需求定制.庆幸的是,Spring MVC实现了很多定制功能并且学习成本不高,而且开发效率大大提高了. 处理HTTP请求 如Servlet中存在doGet和doPost方法一样,如果把Spring MVC的方法声明为

ASP.NET MVC Bundle 使用

基本使用 Global.asax protected void Application_Start() { BundleConfig.RegisterBundles(BundleTable.Bundles); } BundleConfig public static void RegisterBundles(BundleCollection bundles) { bundles.Add(new ScriptBundle("~/bundles/jquery").Include( &quo

瞎折腾之 Lucene.Net + MVC 搜索功能

前言 首先,关于Lucene.Net 的文章已经很多了.我这次决定写出来只是为了练练手,虽然在别人看来没什么用,但是自己确实是手动实践了一把.我个人觉得还是有意义的.爱折腾.敢于实践.才能有所收获,才能发现问题.不要怕自己写的东西有问题,有问题才更好呢,可以让更多的人看见,提意见的当然是好,鄙视的……我也接受,给自己 动力去思考. 想让自己时刻保持着这种程序员-->代码心态.人都是带有惰性的,一旦玩起来 呵呵... 效果显示 进入主题 相信大家对于LuceneNet 并不陌生了,园子里面的文章很

MVC Bundle生成的css路径问题

项目是嵌套在主站的一个子站点,结果用CssRewriteUrlTransform来将相对目录路径改成相对网站根目录路径的时候发现少了虚拟目录的路径.最终解决方案: /// <summary> /// 实现支持虚拟目录的路径转换 /// </summary> public class CssRewriteUrlTransformWrapper : IItemTransform { public string Process(string includedVirtualPath, st