【问题标题】:Understanding minification了解缩小
【发布时间】:2014-04-01 15:51:02
【问题描述】:

我有以下捆绑配置:

bundles.Add(new ScriptBundle("~/bundles/superfish").Include(
            "~/Scripts/superfish.js",
            "~/Scripts/supersubs.js",
            "~/Scripts/hoverIntent.js"));

bundles.Add(new StyleBundle("~/bundles/superfish/css").Include(
            "~/Content/megafish.css",
            "~/Content/superfish-navbar.css",
            "~/Content/superfish-vertical.css",
            "~/Content/superfish.css"));

我在 /Scripts 文件夹中有以下文件:

"~/Scripts/superfish.js",
"~/Scripts/superfish.min.js",
"~/Scripts/supersubs.js",
"~/Scripts/hoverIntent.js"

问题:
a) 我是否应该在捆绑包中包含“.min”文件?
b) 如果不是,自动识别min 文件的规则是什么? 说,我可以用
~/Scripts/superfish-src.min.js代替
~/Scripts/superfish.min.js吗?
或者有时最小文件都包含在“缩小”文件夹中。框架如何知道在哪里搜索它们?
c) css 文件是否有最低版本?

【问题讨论】:

  • Here 有很多信息 - 在“发布”模式下使用“最小”版本
  • 在“发布”中使用“最小”版本而不是什么文件?或者所有以 .min 结尾的文件都被使用,没有缩小版本的文件呢?
  • 我理解它的方式(来自该页面):当您注册“superfish.js”时,然后在 release 模式(如果可用)“superfish.min.js " 被使用,否则原始文件被缩小。在 debug 模式下,不使用缩小来启用调试。

标签: .net asp.net-mvc visual-studio bundling-and-minification


【解决方案1】:

ASP.NET MVC 结合了 缩小了 JS 和 CSS。它有两个内置的处理程序:JsMinifyCssMinify,分别。有 nuget 包可以让您将这些包替换为其他缩小算法,例如 JsMin、YUI 等。

如果存在带有.min 的文件,则假定您已自己处理了缩小,并且该文件将与您的其余资源合并(但不会再次缩小)。

捆绑和缩小在发布配置中发生。因此,在您看到任何事情发生之前,您必须使用发布配置发布和部署您的应用程序。在调试配置中,MVC 单独提供未修改的每个资源。

【讨论】:

  • 那么,如果我有“superfish.js”和“superfish-src.min.js”......如果“superfish.js”文件会被视为缩小版吗?或者,如果我的缩小文件包含在“缩小”文件夹中怎么办? MVC 如何搜索“myFile.js”文件的现有缩小版本?
  • 不,必须完全匹配。 superfish.js 的缩小版是superfish.min.js。没有其他内容适用。此外,缩小版必须与非缩小版位于同一文件夹中。 MVC 不会挖掘其他文件夹。但是,除非有充分的理由自己处理缩小,否则最好只包含非缩小版本并让 MVC 处理所有内容。
  • 另外,你不应该直接引用你的包中已经缩小的文件。如果您指定缩小文件的全名,捆绑器将其视为正常并再次对其进行缩小,这显然会破坏内容。
  • 我明白了。使用 NuGet 时,没有真正的方法来控制是否不添加最小文件...谢谢,这是一个好点!
猜你喜欢
  • 2015-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-15
  • 2013-08-07
  • 1970-01-01
  • 2021-01-15
  • 1970-01-01
相关资源
最近更新 更多