【问题标题】:MVC 4 application is not taking the minified version of js during release modeMVC 4 应用程序在发布模式期间未采用 js 的缩小版本
【发布时间】:2015-08-27 19:12:39
【问题描述】:

我正在使用 WebEssentials 2013 插件来缩小我的 js 文件,并且我假设每当我在发布模式下构建应用程序时,它都必须采用缩小文件而不是原始文件。我的 MVC 4 应用程序没有发生这种情况。有人对这个问题有任何线索吗?

注意:我已经在BundleConfig.cs中进行了以下更改:

#if !DEBUG
            BundleTable.EnableOptimizations = true;
#endif


Scripts 
    Projects 
        Project.js.bundle
               Project.min.js
                  Project.min.js.map

Project.js.bundle 文件

<bundle>
  <settings>
    <minify>true</minify>
    <runOnBuild>true</runOnBuild>
    <outputDirectory />
  </settings>
  <files> 
    <file>/Scripts/Project/CreateProject.js</file>
    <file>/Scripts/Project/ViewProject.js</file>
    <file>/Scripts/Project/EditProject.js</file>
    <file>/Scripts/Project/CloseProject.js</file>
  </files>
</bundle>

我有四个视图,例如创建项目、查看项目、编辑项目、关闭项目。

我可以为每个视图使用捆绑包还是只在每个视图中使用一个缩小文件?哪个是最好的选择?我不知道如何在我的视图中包含一个包。可以提供一下语法吗?

【问题讨论】:

  • 你是如何在你的视图中引用你的包的?
  • MVC 实际上应该为您缩小它们,当您在发布模式下运行时,如果您使用捆绑软件:) - 请参阅 This link
  • @RJCuthbertson 我已经更新了我的问题,请再次查看我的问题并回答我。提前致谢。
  • @Scripts.Render@Styles.Render 是包含捆绑包的 Razor 方法。这是一篇很好的文章,可帮助您开始了解 MVC 中的捆绑基础知识:timgthomas.com/2012/09/a-quick-start-of-asp-net-mvc-4s-bundling
  • 我已经提供给你了。要包含该脚本,请注册一个捆绑包,然后在您的视图中使用@Scripts.Render("/yourbundlepath") 来包含它。在调试模式下它不会缩小,在发布时它会。我强烈建议您阅读我在之前评论中链接的那篇快速入门文章。

标签: model-view-controller bundling-and-minification web-essentials


【解决方案1】:

我认为您在这里混淆了两种不同的工具。

WebEssentials 2013 可以在构建时自动缩小,但您需要实际引用缩小后的文件才能使用它。

Example:
<script src="/js/yourjs.min.js"></script>

您的 BundleTable.EnableOptimizations 行正在使用 System.Web.Optimization 捆绑包。如果您对包使用脚本或样式引用,而不是直接对 JS 或 CSS 文件使用,您会注意到行为按预期工作。

Example:
@Scripts.Render("/bundles/yourbundle")

更多信息请参见Bundling and Minification

【讨论】:

  • 如果我想调试,哪一个最适合性能,哪一个可以帮助我在生产中进行反向源映射?
  • 这个问题没有明确的答案,因为它完全取决于您的情况。尽管优化库还允许您将文件捆绑在一起以减少加载相同资源所需的请求数量,但这两种工具都可以缩小您的代码。优化库未提供源映射 OOTB,但您可以参考此 SO 问题:stackoverflow.com/questions/20431036/… 以获取有关如何实现此目的的信息。我个人更喜欢优化库,但这是一种观点,而不是事实。
【解决方案2】:

当您使用 WebEssentials 2013 插件生成 *.min.js 时,您需要直接引用 min 文件,例如 脚本 src="myscripts.min.js"

或者你可以在 if 条件下引用它们 喜欢

#if (DEBUG)
           script src="myscripts.js"
#elif (RELEASE)
          script src="myscripts.min.js"
#endif

【讨论】:

    猜你喜欢
    • 2013-02-15
    • 2015-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-23
    • 2012-08-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多