我目前正在开发一个ASP.NET MVC 3的原型解决方案,将用作多个项目重写的基础(从Web表单迁移而来)。
我的一个目标是实现应用程序级别的一些脚本管理,而不是我们当前完全没有的情况。
MVC 3 在我看来存在一个缺陷:如果您需要在局部视图或模板视图上指定特定的脚本,则可能会失去对呈现的HTML中脚本块所在位置的控制,或者不得不在父视图上指定每个依赖的javascript文件。
我一直在认真考虑使用 http://getcassette.net/ 作为解决上述问题的框架。然而,MVC4 beta的最新版本让我再次产生了疑问:MVC的Bundles看起来与Cassette的Bundles非常相似,我又感到困惑:
我现在应该实现cassette,然后迁移到MVC4 bundles吗?
我应该自己实现一些简化的脚本管理器(类似于MVC4预览中的Scripts helper class),然后迁移到MVC4吗?
还是应该将cassette集成到项目中,并希望它比MVC的实现更具未来性(我现在确实不喜欢这个选项,因为cassette带有大量依赖)。
我没有使用过Cassette本身,发现很难自己进行比较,并且会感激任何答案或提示。
编辑: 我刚刚发现还有另一种选择:安装MVC捆绑的beta nuget包:https://nuget.org/packages/Microsoft.Web.Optimization
结论: 我越看MVC4 bundle实现就越发现它与之前描述的MVC3问题存在很大差异-它们只是打包和压缩。此外,cassette不仅能够在特定位置呈现脚本标记,还能够按正确的顺序排列它们,这并不容易。
目前,我对这两种解决方案都不满意,因此我将尝试自己进行最小化的实现,希望未来情况会有所改善。但是,如果你不介意在项目中添加5个以上的依赖项和大量的web.config更改,请选择cassette。我希望它会在某个时候得到更新,利用MVC捆绑来减少功能重复,并且希望它能变得更加模块化。
更新: 自Cassette 2.0版本起,如果您只需要捆绑和js依赖关系解析,就不再需要包括咖啡脚本和其他功能。因此,目前Cassette对我来说是一个明显的胜者。