ASP.net MVC Bundle 样式与JS捆绑压缩配置顺序错乱问题

  • 发布日期:2016年4月7日
  • 新闻类别: ASP.net C#
  • 查看:681

ASP.net MVC 中有个资源压缩与捆绑组件(System.Web.Optimization),是很不错的优化工具,可以把多个JS文件或样式表文件压缩成一个文件,可以减少网站的请求次数,提高网站的性能。

不过使用过来有几个问题,第一个问题就是出现顺序乱了:

bundles.Add(new ScriptBundle("~/bundles/weixin").Include(
                   "~/Scripts/lib/jquery/jquery-{version}.js",
                   "~/Scripts/lib/jquery/plugins/weui/jquery-weui.js",
                   "~/Content/WeiXin/js/main.js"));

而前端生成的时候如下:

<script src="/Scripts/lib/jquery/plugins/weui/jquery-weui.js"></script>
<script src="/Scripts/lib/jquery/jquery-2.1.4.js"></script>
<script src="/Content/WeiXin/js/main.js"></script>

这样jquery-weui是依赖jQuery的,会出问题了,解决方法如下:

 public class NonOrderingBundleOrderer : IBundleOrderer
    {
        public IEnumerable<BundleFile> OrderFiles(BundleContext context, IEnumerable<BundleFile> files)
        {
            return files;
        }       
    }

然后捆绑时:

var weiXinJSbundle = new ScriptBundle("~/bundles/weixin")
           .Include("~/Scripts/lib/jquery/jquery-{version}.js")
           .Include("~/Scripts/lib/jquery/plugins/weui/jquery-weui.js")        
           .Include("~/Content/WeiXin/js/main.js");

            weiXinJSbundle.Orderer = new NonOrderingBundleOrderer();
            bundles.Add(weiXinJSbundle);

固定顺序就可以了。