【问题标题】:Use MVC4 bundle tool or use a third part to bundle js and css使用 MVC4 捆绑工具或使用第三方捆绑 js 和 css
【发布时间】:2013-09-19 09:43:56
【问题描述】:
MVC 中包含的捆绑工具是否足够好?
他们有什么理由不使用它吗?
我一直在网络表单中使用 squishIt,从来没有遇到过任何问题。但是现在我在一个 MVC 项目上,我已经看到 MVC 有它自己的捆绑机制。
那我应该改用它吗?
它可以缩小和 gzip 吗?它是否像 squishIt 那样在合并文件上添加任何散列?
或者是否有任何其他解决方案可以使文件在发布时独一无二?
或者还有其他的可以用吗?
【问题讨论】:
标签:
asp.net-mvc
asp.net-mvc-4
bundle
minify
bundling-and-minification
【解决方案1】:
回答你的问题
- 是的,它会缩小 / gzip
- 是的,它添加了一个查询字符串来防止缓存
- 而且(不是问题),但捆绑也适用于网络表单
我建议使用您觉得最舒服的任何东西。内置的捆绑软件很好用,也很容易使用,并且有很好的调试/实时部署功能。
我发现压缩器的压缩效率不如其他压缩器,但这通常不是问题,因为如果提供了 .min 文件,它会使用它。
假设您的包包含一个文件夹中的所有脚本,并且该文件夹具有jquery.1.10.2.js 和jquery.1.10.2.min.js,它将在调试模式下使用未压缩文件,在发布模式下将使用.min 版本。然后,如果您删除 .min 文件,在发布模式下,捆绑包可能会稍大一些,但最终结果仍然是缩小的捆绑包。
More Reading on the ASP.NET Bundling
是的,还有其他软件包,例如 YUICompressor。你可以搜索NuGet 找到它们,但我一直使用内置捆绑,所以不能说它们有多好。
【解决方案2】:
我发现输出顺序很奇怪。
我正在使用这些文件:
bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
"~/Content/Script/json2.js",
"~/Content/Script/jquery-1.10.2.min.js",
"~/Content/Script/jqueryMobileCustom.js",
"~/Content/Script/jquery.mobile-1.3.2.min.js"));
以下输出将是:
<script src="/Content/Script/jquery-1.10.2.min.js"></script>
<script src="/Content/Script/json2.js"></script>
<script src="/Content/Script/jqueryMobileCustom.js"></script>
<script src="/Content/Script/jquery.mobile-1.3.2.min.js"></script>
错了!
但如果我将“jquery-1.10.2.min.js”的名称更改为:“jquery.1.10.2.min.js”。它按原样工作。并随心所欲地订购它们。
您知道在使用 scriptbundle 和 include 时是否可以禁用排序顺序吗?或者为什么它甚至会对 ' - ' 而不是 ' 做出反应。 ' 在我的文件中。
我知道它是一个 'BundleFileSetOrdering' 函数,但我喜欢用包含来指定它。