Javascript WebEssentials是否提供了一种在生产中使用捆绑js文件,但在开发中使用单个js文件的方法?

Javascript WebEssentials是否提供了一种在生产中使用捆绑js文件,但在开发中使用单个js文件的方法?,javascript,visual-studio,bundling-and-minification,web-essentials,Javascript,Visual Studio,Bundling And Minification,Web Essentials,设置: 我有一个大型的SPA应用程序,使用了许多JavaScript文件,这些文件在Visual Studio 2013中使用Web Essentials绑定。然后,我将Web Essentials生成的缩小js文件包含在我的HTML页面中。此应用程序不使用ASP.NET 问题是: 我希望能够分发HTML页面,其中包含一个用于生产的小型脚本,但用于开发的单个未小型脚本 原因: 即使使用映射文件,缩小的脚本也会使调试变得困难。变量和参数名称已缩小,因此调试器与源不匹配。此外,由于所有内容都在一个文

设置:

我有一个大型的SPA应用程序,使用了许多JavaScript文件,这些文件在Visual Studio 2013中使用Web Essentials绑定。然后,我将Web Essentials生成的缩小js文件包含在我的HTML页面中。此应用程序不使用ASP.NET

问题是:

我希望能够分发HTML页面,其中包含一个用于生产的小型脚本,但用于开发的单个未小型脚本

原因:

即使使用映射文件,缩小的脚本也会使调试变得困难。变量和参数名称已缩小,因此调试器与源不匹配。此外,由于所有内容都在一个文件中,因此很难进行开发

当前解决方案:

我有一个grunt任务进入我的html文件,并对其进行修改,以替换
标记。它的缺点是随着我添加到页面中的每个文件而增长


web essentials是否提供了一个比我目前所做的更好的解决方案,而我可能只是忽略了这一点?

我不确定web essentials是否能够处理这种情况 根据我目前的项目经验,以下是我在开发过程中用于本地调试代码的内容-

  • 如果您使用ASP.NET绑定功能并且必须在BundleConfig.cs中指定文件引用,则进行本地调试。您可以通过设置标志BundleTable使浏览器能够按原样加载每个文件;在Global.asax文件中。我们加载单个bundle文件以在本地环境中工作
  • 对于生产,我们使用文件引用的缩小版本
  • 例如,在你的HTML中,你可以有这样一个检查

    @如果(本地){

    @Scripts.Render(“~/Scripts/src/BundleName”)

    }

    否则{

    //这是一个包含缩小文件引用的部分HTML RenderPartial(“ClientTemplates/MinifiedScripts”)

    }


    感谢您将捆绑工具与参考实现相结合

    WebEssentials 2013构建压缩(缩小)JavaScript、CSSLESSSASS和图像文件包。无论您是否处于调试模式,Web Essentials都应该创建缩小包

    您正在寻找一种方法,可以在发布模式下选择性地引用精简文件,在调试模式下选择性地引用原始文件。这可能意味着相当复杂的Razor编码来检查发布版本和呈现引用调用

    更好的解决方法是使用

    在开发环境中调试JavaScript很容易(其中Web.config文件中的compilation元素设置为debug=“true”),因为当debug=“true”时,JavaScript文件不会捆绑或缩小

    如果Web.config中的
    debug=“true”
    ,则缩小的捆绑包仍将存在。但在运行时,框架将引用原始文件,而不是缩小的文件。您的Web.config现在负责维护引用的资产版本

    Web基本捆绑包是被动资产。Web Essentials中没有区分发布模式和调试模式的功能,因为这是一个运行时操作


    注意:已删除捆绑和缩小

    重要

    Web Essentials 2015不再包含捆绑和 缩小JS、CSS和HTML文件以及编译更少的SCS 和咖啡脚本文件。这些功能已移到自己的功能 单独的扩展大大改进了功能


    通常的做法是使用ASP.NET捆绑程序。这是避免使用Web Essentials捆绑的另一个原因。

    我刚刚在这里使用了Bundler/Minifier:

    为了帮助查看未绑定和未统一的JS和CSS,我创建了一个帮助器,根据web应用程序是否在启用调试的情况下运行来呈现这两种JS和CSS

    见:

    例如:

    @Html.Bundle("/Content/Styles/Site.min.css")
    @Html.Bundle("/Scripts/Scripts.min.js")
    
    注意:使用相对路径,包括正斜杠(/)


    调试时,所有输入文件都将呈现到页面上,不调试时,提供的路径将呈现出来

    如果您谈到asp.net脚本绑定功能,则在web.config中打开/关闭调试模式将影响脚本绑定。您还可以在RegisterBundles方法中显式使用System.Web.Optimization.EnableOptimizations=true/false。不幸的是,我没有使用ASP.net绑定。作为对当前解决方案的升级,我采用了完全的操作系统路线,并使用browserify来管理我的页面上缩小和包含的js文件。这使我能够灵活地进行调试和发布设置。谢谢你的回答。web essentials 2015的更新特别有用。razor解决方案或ASP.NET捆绑程序都不适用于我的项目,因为我没有使用ASP.NET。它的纯旧html页面带有纯旧脚本引用。我已更新该问题,以指定我未将ASP.NET用于网页。SPA将ASP.NET用于Web API服务,但是没有一个视图是使用Razor或ASP。Net@codetoast,在您的例子中,chrome调试器有一个“美化”工具,可以创建缩小文件的“扩展”版本。您可以在扩展版本中单步执行并设置断点。这是一个很棒的工具。感谢Mads和Mark指出了这一点。不幸的是,这对于我们的项目来说有点晚了,然而,对于同一条船上的其他人来说,这是一个很好的选择。我还想指出的是,TaskRunner Explorer,也称为Mads,以及gulp和各种工具,为我们的产品提供了一个到目前为止运行良好的适当解决方案。