zoukankan      html  css  js  c++  java
  • Mvc 之System.Web.Optimization 压缩合并如何让*.min.js 脚本不再压缩

      最近项目中用到了easy ui ,但是在配置BundleConfig 的时候出现了问题,easy ui的脚本jquery.easyui.min.js 压缩后出现各种脚本错误,总是莫名其妙的 i标量错误,xx未定义。其实在其他项目中也会遇到压缩后报错的问题,只是js文件比较小,直接在页面就引用了,不过easyui文件有700kb左右,直接引用会导致浏览器无法出现200 OK(from cache)缓存,增加http开销。

      百度,谷歌也没有太好的解决办法。只能自己想办法了,通过分析System.Web.Optimization源码,发现在资源合并前会对ScriptBundle应用Transforms。最后发现只要Bundle在加入 BundleCollection之前清空Transforms就不会在压缩原始资源了。

    明白原理也有解决方案了,比如:

    1.在 bundles.Add(...)前清空Bundle.Transforms:

    • 优点:简单,无需任何额外附件代码即可实现
    • 缺点:不能对Include(... ...)的每一项资源单独设定是否压缩
    var scriptBundle=new ScriptBundle("~/Content/jquery.easyui/1.4.5/js").Include(
        "~/Content/jquery.easyui/1.4.5/jquery.easyui.min.js",
        "~/Content/jquery.easyui/1.4.5/locale/easyui-lang-zh_CN.js");
    scriptBundle.Transforms.Clear();
    bundles.Add(scriptBundle);
    

      

    2.写一个扩展方法,清空Transforms并返回Bundle:

    • 优点:简单;
    • 缺点:不能对Include(... ...)的每一项资源单独设定是否压缩;
    public static class BundleEx
    {
        public static Bundle NoMinify(this Bundle scriptBundle)
        {
            scriptBundle.Transforms.Clear();
            return scriptBundle;
        }
    }
    
    bundles.Add(new ScriptBundle("~/Content/jquery.easyui/1.4.5/js").Include(
                    "~/Content/jquery.easyui/1.4.5/jquery.easyui.min.js",
                    "~/Content/jquery.easyui/1.4.5/locale/easyui-lang-zh_CN.js").NoMinify());
    

      

    3.自己继承 ScriptBundle重写Transforms逻辑,或者重写GenerateBundleResponse(BundleContext context)不应用Transform;

    • 优点:灵活,可以单独控制每个文件是否进行压缩;
    • 缺点:额外增加代码

    作者:SplendidDream
    出处:http://www.cnblogs.com/SplendidDream/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    面试精选:链表问题集锦
    经典排序算法总结与实现 ---python
    Python高级编程–正则表达式(习题)
    Python面试题汇总
    Python正则表达式
    Linux下的Libsvm使用历程录
    在 linux(ubuntu) 下 安装 LibSVM
    过拟合
    百度历年笔试面试150题
    MATLAB 的数据类型
  • 原文地址:https://www.cnblogs.com/SplendidDream/p/Mvc-Bundle-no-Optimization-min_js.html
Copyright © 2011-2022 走看看