javascript - 盒式 bundle 与 MVC4 bundle

标签 javascript asp.net asp.net-mvc asp.net-mvc-4 asp.net-optimization

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

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

MVC 3 恕我直言:如果您需要在局部 View 或模板 View 上指定特定脚本 - 您可能最终会失去对脚本 block 在呈现的 HTML 中的位置的控制,或者不得不在父 View 上指定每个依赖的 javascript 文件。

我一直在认真考虑使用 http://getcassette.net/作为解决所述问题的框架。然而,上次发布的 MVC4 测试版让我再次怀疑自己:MVC 的 Bundle 看起来真的和 Cassette 的 Bundle 很相似,我再次感到困惑:

  1. 我应该现在实现 cassette 而不是迁移到 MVC4 包吗?

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

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

我没有使用 Cassette 本身的经验,发现自己很难进行比较,如果有任何答案或提示,我将不胜感激。

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

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

但是,如果您不害怕在您的项目中添加 5+ 依赖项和大量 web.config 更改 - 请选择 cassette。我希望它会在某个时候进行更新,以利用内部的 MVC 捆绑来减少功能重复,并希望它会变得更加模块化。


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

最佳答案

此处提供有关 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 is adding a feature that makes it easy to “bundle” or “combine” multiple CSS and JavaScript files into fewer HTTP requests. This causes the browser to request a lot fewer files and in turn reduces the time it takes to fetch them.

The next release of ASP.NET is also adding a new feature that makes it easy to reduce or “minify” the download size of the content as well.

看起来它与 Cassette 本质上是一样的。在所有其他条件相同的情况下,使用 ASP.NET MVC 原生的解决方案。

关于javascript - 盒式 bundle 与 MVC4 bundle ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9399592/

相关文章:

c# - 使用 ASp.net MVC3 插入数据库后如何显示类似 "successfully Inserted"的警告消息

c# - 在 Razor View 中遍历列表

asp.net-mvc - 当我使用 Web API 从匿名类返回数据时,我应该使用什么返回类型?

sql-server - 如何将 ASP.NET Identity 表集成到现有数据库中

javascript - jQuery 仅单击按钮一次

javascript - 使用javascript在图像上覆盖网格,需要帮助获取网格坐标

javascript - 在 jQuery 中,.state() 如何确定 Promise 是待处理、已解决还是已拒绝

javascript - typescript 奇怪的行为扩展数字

asp.net - MVC2 - 逻辑应该去哪里的基本问题

c# - 使用验证器确保用户填写了两个必填字段之一