37

关于 ASP.NET 4.5 的新 System.Web.Optimization / Microsoft.AspNet.Web.Optimization:

谁能解释使用BundleConfig.cs类文件与bundle.config xml 文件使用捆绑资源的区别?

我已经看到一些文章显示在 BundleConfig.cs 中捆绑 js 和 css,而其他文章则在 BundleConfig.cs中捆绑 js 和在 bundle.config 中捆绑 css。

我想我不明白#1)为什么你不会为了简单起见而只用一种特定的方式来做它们 - 和#2)为什么有人更喜欢在类文件中硬编码这样的资源?将它们放在一个 xml 文件中似乎是一种更加动态的方法,如果需要,可以即时更改该文件。

似乎更多的文章实际上倾向于使用 BundleConfig.cs。是否有一些特别的赞成或反对鼓励这样做?

此外,如果有任何关于 System.Web.Optimization 的真实文档,我很想知道位置(因为我肯定找不到它)。

谢谢-

4

3 回答 3

23

据我所知,接受的答案实际上根本没有回答这个问题。它讨论了捆绑框架的好处,但没有讨论使用 BundleConfig.cs 与使用 bundle.config 文件有何不同。

很大程度上取决于您是喜欢在代码中还是在标记中工作,但每个人都有一些特定于该方法的优点。

对于 bundle.config,实际上只有一个好处,但它是一个很大的好处。通过使用它,您可以管理捆绑包,而无需完全接触代码。这意味着您可以在不重新编译的情况下进行更改,从而更轻松地进行快速部署。此外,这意味着您的前端开发人员将最熟悉应该捆绑的文件,可以定义捆绑包,而无需使用任何后端代码。

但是,您可以在 Bundle.config 中指定的内容有很多限制。例如,您不能指定要应用于单个项目或捆绑包的任何自定义转换。您可以设置的唯一捆绑属性是PathCdnPathCdnFallbackExpression。您不能设置OrdererorEnableFileExtensionReplacements属性。您无法包含包含所有子目录的目录(就像您可以使用该IncludeDirectory方法一样)。基本上,有很多功能只能通过后端代码使用。当然,您可以通过使用后端代码检索在 bundle.config 中定义的捆绑包,然后进行操作来设置其中的很多内容。但是,如果您要这样做,您也可以在后端创建捆绑包。

我个人的理念是使用 bundle.config ,除非我需要对 bundle 做一些不可能的事情。但是,我确实同意将它们全部放在一个地方是理想的。如果我决定需要使用该类,那么我将把它用于该类型的所有包(不过,我有时确实将我的 JS 包放在类中,将我的 CSS 包放在 .config 文件中)。不过,我敢肯定,一些完全通情达理的人会不同意这个过程。

于 2014-11-18T18:22:46.753 回答
7

该文档比我以往任何时候都更好地解释了这一切

http://www.asp.net/mvc/tutorials/mvc-4/bundling-and-minification

最好的事情之一是:

捆绑框架遵循几个常见的约定,例如:

当“FileX.min.js”和“FileX.js”存在时选择“.min”文件发布。

选择非“.min”版本进行调试。忽略仅由 IntelliSense 使用的“-vsdoc”文件(例如 jquery-1.7.1-vsdoc.js)。

于 2013-01-17T13:05:40.127 回答
7

谁能解释使用 BundleConfig.cs 类文件与 bundle.config xml 文件使用捆绑资源的区别?

不同之处在于您必须在运行时读取、解析和加载 bundle.config 的内容。因此,使用 BundleConfig.cs 类文件可能会更简单。

1)为什么你不会为了简单起见只用一种特殊的方式来做它们

完全同意。

2)为什么有人更愿意在类文件中硬编码这样的资源?

简单地说:容易理解。

将它们放在一个 xml 文件中似乎是一种更加动态的方法,如果需要,可以即时更改该文件。

是的,但是您必须编写更多代码来检测何时发生更改,然后添加/删除/替换现有设置。如果做得不好,可能会导致运行时出现 UI 问题。

此外,如果有任何关于 System.Web.Optimization 的真实文档,我很想知道位置(因为我肯定找不到它)。

上面已经回答了,但我会重复:http ://www.asp.net/mvc/tutorials/mvc-4/bundling-and-minification

于 2014-06-16T20:35:47.367 回答