System.Web.Optimization在最小化javascript时更改js文件的顺序

马塔斯·维特凯维奇乌

我在使用最小化文件时观察到一个非常特殊的行为,当System.Web.Optimization我不缩小文件时,我已经在使用IBundleOrderer该方法来保持文件顺序良好

public class RespectGivenBundleOrder : IBundleOrderer
{
    public IEnumerable<BundleFile> OrderFiles(BundleContext context, IEnumerable<BundleFile> files)
    {
        return files;
    }
}

public static void RegisterTestingBundle(BundleCollection bundles)
    {
        var bundle = new ScriptBundle("~/OnTheMoveWebFiles/bundles/Testing");
        bundle.Orderer = new RespectGivenBundleOrder();
        bundle.Include(
            string.Format("{0}jquery-{{version}}.js", baseJSFolder),
            string.Format("{0}ua-parser.js", baseJSFolder),
            string.Format("{0}OnTheMove_Core.js", baseJSFolder),
            string.Format("{0}OnTheMove_TheApplication.js", baseJSFolder),
            string.Format("{0}OnTheMove_JQMQueryString.js", baseJSFolder),
            string.Format("{0}OnTheMove_OfflineAuditing.js", baseJSFolder),
            string.Format("{0}OnTheMove_DatabaseManager.js", baseJSFolder),
            string.Format("{0}OnTheMove.js", baseJSFolder),
            string.Format("{0}OnTheMove_Offline.js", baseJSFolder),
            string.Format("{0}OnTheMove_DatabaseLoader.js", baseJSFolder),
            string.Format("{0}OnTheMove_DatabaseTestHelper.js", baseJSFolder),
            string.Format("{0}OnTheMove_SmartScriptPlayer.js", baseJSFolder),
            string.Format("{0}jasmine.js", baseJSFolder),
            string.Format("{0}jasmine-html.js", baseJSFolder),
            string.Format("{0}jasmine-jquery-{{version}}.js", baseJSFolder),
            string.Format("{0}jasmine-OnTheMove-GenericMocksAndHelpers.js", baseJSFolder),
            string.Format("{0}jasmine-OnTheMove-DatabaseManager-SiebelToSQL-Tests.js", baseJSFolder),
            string.Format("{0}jasmine-OnTheMove-TreeValidator-Tests.js", baseJSFolder),
            string.Format("{0}jasmine-OnTheMove-GlobalFunction-Tests.js", baseJSFolder),
            string.Format("{0}jasmine-OnTheMove-OnTheMove_BusinessComponent-Tests.js", baseJSFolder),
            string.Format("{0}jasmine-OnTheMove_DatabaseTestHelper-Tests.js", baseJSFolder),
            string.Format("{0}jasmine-OnTheMove_OfflineAuditing-Tests.js", baseJSFolder),
            string.Format("{0}jasmine-OnTheMove-JQueryExtension-Tests.js", baseJSFolder));
        bundles.Add(bundle);
    }

但是当我打开最小化选项时,我遇到了JavaScript错误,并且通过在chrome开发人员工具中检查了最小化文件的开头,我可以立即看到该顺序被弄乱了。

在执行var cont = new BundleResolver(BundleTable.Bundles ).GetBundleContents("~/OnTheMoveWebFiles/bundles/Testing")我的即时窗口中,我得到

Count = 23
    [0]: "~/OnTheMoveWebFiles/js/jquery-1.7.1.js"
    [1]: "~/OnTheMoveWebFiles/js/ua-parser.js"
    [2]: "~/OnTheMoveWebFiles/js/OnTheMove_Core.js"
    [3]: "~/OnTheMoveWebFiles/js/OnTheMove_TheApplication.js"
    [4]: "~/OnTheMoveWebFiles/js/OnTheMove_JQMQueryString.js"
    [5]: "~/OnTheMoveWebFiles/js/OnTheMove_OfflineAuditing.js"
    [6]: "~/OnTheMoveWebFiles/js/OnTheMove_DatabaseManager.js"
    [7]: "~/OnTheMoveWebFiles/js/OnTheMove.js"
    [8]: "~/OnTheMoveWebFiles/js/OnTheMove_Offline.js"
    [9]: "~/OnTheMoveWebFiles/js/OnTheMove_DatabaseLoader.js"
    [10]: "~/OnTheMoveWebFiles/js/OnTheMove_DatabaseTestHelper.js"
    [11]: "~/OnTheMoveWebFiles/js/OnTheMove_SmartScriptPlayer.js"
    [12]: "~/OnTheMoveWebFiles/js/jasmine.js"
    [13]: "~/OnTheMoveWebFiles/js/jasmine-html.js"
    [14]: "~/OnTheMoveWebFiles/js/jasmine-jquery-1.7.0.js"
    [15]: "~/OnTheMoveWebFiles/js/jasmine-OnTheMove-GenericMocksAndHelpers.js"
    [16]: "~/OnTheMoveWebFiles/js/jasmine-OnTheMove-DatabaseManager-SiebelToSQL-Tests.js"
    [17]: "~/OnTheMoveWebFiles/js/jasmine-OnTheMove-TreeValidator-Tests.js"
    [18]: "~/OnTheMoveWebFiles/js/jasmine-OnTheMove-GlobalFunction-Tests.js"
    [19]: "~/OnTheMoveWebFiles/js/jasmine-OnTheMove-OnTheMove_BusinessComponent-Tests.js"
    [20]: "~/OnTheMoveWebFiles/js/jasmine-OnTheMove_DatabaseTestHelper-Tests.js"
    [21]: "~/OnTheMoveWebFiles/js/jasmine-OnTheMove_OfflineAuditing-Tests.js"
    [22]: "~/OnTheMoveWebFiles/js/jasmine-OnTheMove-JQueryExtension-Tests.js"

这表明订单已被保留,但是当我将订单最小化(var contents =BundleManager.GetBundleContents("~/OnTheMoveWebFiles/bundles/Testing");)时,我得到了

"function TheApplication(){return window.onTheMove.theApplication}function decodeQueryString(n,t,i,r){var f,u={},s,h,e,o;if(i||(i=function(){return}),...

这只是开始,OnTheMove_TheApplication.js并非jquery-1.7.1.js我所期望的。我看到的一种解决方案是将其拆分为更多的捆绑包,并尝试以这种方式进行处理。
为什么Minifier不保留顺序?我的期望错了吗?

克里斯托夫·维亚拉特(Christophe Vialatte)

我设法通过创建扩展来解决此问题:

public class AsIsBundleOrderer : IBundleOrderer
{
    public virtual IEnumerable<FileInfo> OrderFiles(BundleContext context, IEnumerable<FileInfo> files)
    {
        return files;
    }
}

internal static class BundleExtensions
{
    public static Bundle ForceOrdered(this Bundle sb)
    {
        sb.Orderer = new AsIsBundleOrderer();
        return sb;
    }
}

然后,您可以注册您的捆绑软件

bundles.Add(new ScriptBundle("~/bundles/home")
            .Include("~/Scripts/leaflet-0.6.4.js")
            .Include("~/Scripts/oms.js")
            .Include("~/Scripts/home.js").ForceOrdered()

        );

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

System.Web.Optimization在最小化javascript时更改js文件的顺序

来自分类Dev

使用System.Web.Optimization捆绑最小化时,是否可以禁用js / css验证?

来自分类Dev

System.Web.Optimization.JsMinify生成无效的JavaScript

来自分类Dev

使用 [授权] 时的 System.Web.HttpException

来自分类Dev

从System.Web.HttpInputStream获取文件信息

来自分类Dev

为System.Web.Optimization安装了Nuget程序包,复制System.Web.Optimization.xml文件时不断出错。访问被拒绝

来自分类Dev

如何从MVC5中删除System.Web.Optimization

来自分类Dev

如何引用System.Web.Optimization程序集的1.1.0.0版

来自分类Dev

获取对System.Web.Optimization中使用的URL的访问

来自分类Dev

获取对System.Web.Optimization中使用的URL的访问

来自分类Dev

根据某些System.getProperty()更改web.xml

来自分类Dev

System.Web.Http.Authorize与System.Web.Mvc.Authorize

来自分类Dev

System.Web.Razor与System.Web.WebPages.Razor

来自分类Dev

SelectList的System.Web.Mvc与System.Web.WebPages.Html

来自分类Dev

SelectList的System.Web.Mvc与System.Web.WebPages.Html

来自分类Dev

System.Web.WebSocket与SignalR

来自分类Dev

System.Web.WebSocket与SignalR

来自分类Dev

WPF:最小化 System.Windows.Window 的状态

来自分类Dev

使用“ System.Web.Optimization”压缩由asp.net捆绑创建的捆绑包?

来自分类Dev

从缓存中检索System.Web.Optimization包花费大量时间

来自分类Dev

ASP .NET Web窗体:无法加载文件或程序集'System.Web.WebPages.Deployment,版本= 2.0.0.0

来自分类Dev

每个进程初始化System.Web.HttpApplication多少次

来自分类Dev

类型'System.Web.HttpInputStream'未标记为可序列化

来自分类Dev

如何模拟 Coldbox.system.web.context.RequestContext 并初始化它?

来自分类Dev

添加'System.Web.Http'名称空间时找不到类型或名称空间名称'HttpGet'

来自分类Dev

当GrantResourceOwnerCredentials引用System.Web.Helpers时,CORS不起作用

来自分类Dev

从TFS检出时System.Web.Mvc失去参考的奇怪问题

来自分类Dev

C#-@if内具有未关闭的HTML元素时出现System.Web.HttpParseException错误

来自分类Dev

执行处理程序'System.Web.Mvc.HttpHandlerUtil + ServerExecuteHttpHandlerAsyncWrapper的子请求时出错

Related 相关文章

  1. 1

    System.Web.Optimization在最小化javascript时更改js文件的顺序

  2. 2

    使用System.Web.Optimization捆绑最小化时,是否可以禁用js / css验证?

  3. 3

    System.Web.Optimization.JsMinify生成无效的JavaScript

  4. 4

    使用 [授权] 时的 System.Web.HttpException

  5. 5

    从System.Web.HttpInputStream获取文件信息

  6. 6

    为System.Web.Optimization安装了Nuget程序包,复制System.Web.Optimization.xml文件时不断出错。访问被拒绝

  7. 7

    如何从MVC5中删除System.Web.Optimization

  8. 8

    如何引用System.Web.Optimization程序集的1.1.0.0版

  9. 9

    获取对System.Web.Optimization中使用的URL的访问

  10. 10

    获取对System.Web.Optimization中使用的URL的访问

  11. 11

    根据某些System.getProperty()更改web.xml

  12. 12

    System.Web.Http.Authorize与System.Web.Mvc.Authorize

  13. 13

    System.Web.Razor与System.Web.WebPages.Razor

  14. 14

    SelectList的System.Web.Mvc与System.Web.WebPages.Html

  15. 15

    SelectList的System.Web.Mvc与System.Web.WebPages.Html

  16. 16

    System.Web.WebSocket与SignalR

  17. 17

    System.Web.WebSocket与SignalR

  18. 18

    WPF:最小化 System.Windows.Window 的状态

  19. 19

    使用“ System.Web.Optimization”压缩由asp.net捆绑创建的捆绑包?

  20. 20

    从缓存中检索System.Web.Optimization包花费大量时间

  21. 21

    ASP .NET Web窗体:无法加载文件或程序集'System.Web.WebPages.Deployment,版本= 2.0.0.0

  22. 22

    每个进程初始化System.Web.HttpApplication多少次

  23. 23

    类型'System.Web.HttpInputStream'未标记为可序列化

  24. 24

    如何模拟 Coldbox.system.web.context.RequestContext 并初始化它?

  25. 25

    添加'System.Web.Http'名称空间时找不到类型或名称空间名称'HttpGet'

  26. 26

    当GrantResourceOwnerCredentials引用System.Web.Helpers时,CORS不起作用

  27. 27

    从TFS检出时System.Web.Mvc失去参考的奇怪问题

  28. 28

    C#-@if内具有未关闭的HTML元素时出现System.Web.HttpParseException错误

  29. 29

    执行处理程序'System.Web.Mvc.HttpHandlerUtil + ServerExecuteHttpHandlerAsyncWrapper的子请求时出错

热门标签

归档