我目前正在开发一个原型ASP.NET MVC 3解决方案,该解决方案将用作多个项目重写的基础(来自Web表单)。
我的目标之一是跨应用程序实现一些脚本管理,而不是我们目前没有的。
MVC 3 有一个缺陷恕我直言:如果您需要在部分视图或模板视图上指定特定脚本 - 您最终可能会失去对脚本块在呈现的HTML中所处位置的控制或不得不在父视图上指定每个依赖的javascript文件。
我一直在认真考虑使用http://getcassette.net/作为解决所述问题的框架。然而,MVC4测试版的最后一个版本让我再次怀疑自己:MVC的Bundles看起来与Cassette的Bundles非常相似,我再次感到困惑:
我现在应该实现盒式磁带而不是迁移到MVC4捆绑包吗?
我应该自己实现一些简化的脚本管理器(比如MVC4预览中的Scripts助手类)然后迁移到MVC4
或者我应该将卡带集成到项目中,并希望它比MVC的实现更具有前瞻性(我现在真的不喜欢这个选项,仅仅因为卡带附带了大量的依赖性)。 / p>
我对Cassette本身没有任何经验,发现自己很难进行比较,并希望得到任何答案或提示。
修改 我只想到还有另一种选择:为MVC捆绑安装beta nuget包:https://nuget.org/packages/Microsoft.Web.Optimization
结论: 我对MVC4捆绑实现的看法越多,我注意到的更大的区别:MVC4捆绑不解决上面描述的MVC3问题 - 他们只是捆绑和放大缩小。此外,盒式磁带不仅能够在特定位置呈现脚本标签,而且还能够以正确的顺序对它们进行排序,这不是一件容易的事。 所以目前我对这两种解决方案都不满意,我会尝试提出自己的简约实施,希望将来情况有所改善。
但是,如果您不害怕将 5 + 依赖项和一堆web.config更改添加到您的项目中,请转到盒式磁带。我希望它会在某些时候更新,以利用内部的MVC捆绑来减少功能重复,并且希望会变得更加模块化。
更新 从Cassette 2.0版开始,如果你只需要捆绑和js依赖解析,就不再需要包含咖啡脚本和Cassette的其他功能。所以在这一点上,卡塞特对我来说是一个明显的赢家。
答案 0 :(得分:10)
有关ASP.NET MVC捆绑的信息,请访问:http://weblogs.asp.net/scottgu/archive/2011/11/27/new-bundling-and-minification-support-asp-net-4-5-series.aspx。
ASP.NET正在添加一项功能,可以轻松“捆绑”或 将多个CSS和JavaScript文件“合并”到更少的HTTP请求中。 这会导致浏览器请求更少的文件,反过来 减少了获取它们所需的时间。
ASP.NET的下一个版本还添加了一个新功能 也容易减少或“缩小”内容的下载大小。
看起来它与Cassette基本相同。在所有其他条件相同的情况下,请使用ASP.NET MVC原生的解决方案。
答案 1 :(得分:9)
我最后在上一个项目中使用了Cassette,它运行得很好。如果你使用NuGet,真的没有很多配置,所以我的想法是,现在使用Cassette并不是很难,如果你愿意,可以稍后再切换。
要考虑的另一件事是Cassette进行Less编译。我不确定MVC4捆绑是否会这样做,因为我没有时间阅读它。
答案 2 :(得分:4)
Cassette仍然是一个有趣的选择,因为它本身支持less和coffescript。如果您对客户端mvc框架(骨干网,淘汰赛等)感兴趣,它还支持HTML模板
答案 3 :(得分:1)
正如对此的更新一样,在Visual Studio 2012的Update 2包中添加了LESS和CoffeeScript支持,因此它开始越来越像是更好地将所需的转换添加到本机实现捆绑/缩小支持MVC4而不是长期使用Cassette。