43

我目前正在开发一个原型 ASP.NET MVC 3 解决方案,该解决方案将用作多个项目重写的基础(来自 Web 表单)。

我的目标之一是跨应用程序实现一些脚本管理,而我们目前没有。

MVC 3有一个缺陷恕我直言:如果您需要在部分视图或模板视图上指定特定脚本 - 您最终可能会失去对脚本块在呈现的 HTML 中的位置的控制,或者必须在父视图上指定每个依赖的 javascript 文件.

我一直在认真考虑使用http://getcassette.net/作为解决所描述问题的框架。然而,MVC4 beta 的最新版本让我再次怀疑自己:MVC 的 Bundles 看起来与 Cassette 的 Bundles 非常相似,我再次感到困惑:

  1. 我应该现在实施盒式磁带而不是迁移到 MVC4 捆绑包吗?

  2. 我是否应该自己实现一些简化的脚本管理器(比如 MVC4 预览中的 Scripts 助手类),然后迁移到 MVC4

  3. 或者我应该将盒式磁带集成到项目中,并希望它比 MVC 的实现更具前瞻性(我现在真的不喜欢这个选项,只是因为盒式磁带附带的依赖项数量之多)。

我没有使用 Cassette 本身的经验,并且发现自己很难进行比较,并且希望得到任何答案或提示。

编辑: 我只是认为还有另一种选择:为 MVC 捆绑安装 beta nuget 包:https ://nuget.org/packages/Microsoft.Web.Optimization

结论: 我对 MVC4 捆绑包实现的研究越多,我注意到的差异就越大:MVC4 捆绑包没有解决上述 MVC3 问题 - 它们只是进行捆绑和缩小。此外,盒式磁带不仅能够在特定位置呈现脚本标签,它还能够以正确的顺序对它们进行排序,这不是微不足道的。因此,目前我对这两种解决方案都不满意,我将尝试提出自己的简约实现,希望将来这种情况会有所改善。

但是,如果你不害怕在你的项目中添加5个以上的依赖项和一堆 web.config 更改 - 去卡带。我希望它会在某个时候更新以利用内部的 MVC 捆绑来减少功能重复,并希望它会变得更加模块化。


更新: 从 Cassette 2.0 版开始,如果您只需要捆绑包和 js 依赖项解析,则不再需要包含咖啡脚本和 Cassette 的其他功能。所以在这一点上,Cassette 对我来说是一个明显的赢家。

4

4 回答 4

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 原生的解决方案。

于 2012-02-22T17:15:20.717 回答
9

我最终在我的上一个项目中使用了 Cassette,它运行良好。如果您使用 NuGet,它实际上并没有太多的配置,所以我的想法是现在使用 Cassette,然后如果您愿意,稍后再切换不会太难。

要考虑的另一件事是 Cassette 进行了较少的编译。我不确定 MVC4 捆绑是否这样做,因为我没有时间阅读它。

于 2012-02-22T17:21:47.600 回答
4

Cassette 仍然是一个有趣的替代方案,因为它具有对 less 和 coffescript 的原生支持。如果您对客户端 mvc 框架(骨干网、淘汰赛等)感兴趣,它还支持 HTML 模板

于 2012-02-23T14:38:32.190 回答
1

作为对此的更新,在 Visual Studio 2012 的 Update 2 包中添加了 LESS 和 CoffeeScript 支持,因此它开始看起来越来越像将所需的转换添加到 Bundling/ 的本机实现中会更好从长远来看,缩小支持 MVC4,而不是使用 Cassette。

于 2013-04-30T00:33:35.710 回答