Tom*_*son 13 asp.net asp.net-mvc asp.net-mvc-4 bundling-and-minification
我想要一些关于ASP.NET MVC Bundling和Minification的专家建议.我的项目脚本文件中包含未经编译的(.js)和缩小版本(.min.js).我已将它们包含在我的脚本包中,如下所示:
bundles.Add(new ScriptBundle("~/bundles/layout").Include(
"~/Scripts/jquery-{version}.js",
"~/Scripts/lib/errorhandling.js",
"~/Scripts/lib/errorhandling.min.js",
"~/Scripts/vendor/modernizr.custom.js",
"~/Scripts/vendor/modernizr.custom.min.js",
"~/Scripts/toastr.js",
"~/Scripts/toastr.min.js"));
Run Code Online (Sandbox Code Playgroud)
似乎捆绑包确实只包含一次每个脚本文件,而不是两次.我已经确认了这一点,无论是开发还是生产.(作为旁注,在开发中,也就是说,当debug = true时,不会渲染包,但是文件作为单独的脚本标记包含在内.这也是我想要的行为.)
我的问题是:
(1)这是最好的和推荐的方法,包括用于生产设置的已缩小文件和用于开发的未分类文件?
(2)ASP.NET是否试图在生产中缩小整个捆绑包(即使它已经缩小)?如果是,阻止ASP.NET尝试缩小捆绑包的最佳方法是什么?
提前致谢!
小智 20
没有必要在脚本包中专门包含缩小版本.默认情况下,MVC将搜索与.min.js匹配的文件并包含该文件(不完全确定它是否可以进一步缩小).如果没有,它会创建一个缩小版本.您可以通过将以下内容添加到BundleConfig.cs来测试它
using System.Web.Optimization;
Run Code Online (Sandbox Code Playgroud)
然后在最后添加以下内容以覆盖debug=true开发中
BundleTable.EnableOptimizations = true;
Run Code Online (Sandbox Code Playgroud)
来自MS文档
捆绑框架遵循几个常见的约定,例如:
无论是否缩小,捆绑功能对于一起使用的脚本和css的逻辑分组以及作为控制事物的单个位置都是有用的.它还会生成唯一的URL,从而消除了浏览器缓存问题.
如果你使用ScriptBundle,引擎将尝试缩小(除非你设置debug = true).
您可以通过使用Bundle()而不是ScriptBundle()来关闭缩小,但保留捆绑.看马丁的回答:
另外,使用Bundle()而不是ScriptBundle()的预缩小文件将保留许可证头.使用jquery的MIT许可证,它至少规定不应删除它.我不确定如何解释默认的Microsoft MVC模板使用ScriptBundle()这一事实.
| 归档时间: |
|
| 查看次数: |
9903 次 |
| 最近记录: |