Bundle以错误的顺序加载

时间:2014-03-08 19:35:15

标签: javascript asp.net asp.net-mvc bundle bundling-and-minification

在我的_Layout视图中,我包含以下scriptbundle:

bundles.Add(new ScriptBundle("~/bundles/js").Include(
                "~/Scripts/jquery.min.js",
                "~/Scripts/jquery-ui.min.js",
                "~/Scripts/bootstrap.min.js",
                "~/Scripts/jquery.flot.categories.js",
                "~/Scripts/jquery.flot.js",
                "~/Scripts/jquery.flot.min.js",
                "~/Scripts/jquery.flot.orderBars.js",
                "~/Scripts/jquery.flot.pie.js",
                "~/Scripts/jquery.flot.resize.js",
                "~/Scripts/graphtable.js",
                "~/Scripts/fullcalendar.min.js",
                "~/Scripts/chosen.jquery.min.js",
                "~/Scripts/autoresize.jquery.min.js",
                "~/Scripts/jquery.autotab.js",
                "~/Scripts/jquery.jgrowl_minimized.js",
                "~/Scripts/jquery.dataTables.min.js",
                "~/Scripts/jquery.stepy.min.js",
                "~/Scripts/jquery.validate.min.js",
                "~/Scripts/jquery.cookie.js",
                "~/Scripts/raphael.2.1.0.min.js",
                "~/Scripts/justgage.1.0.1.min.js",
                "~/Scripts/glisse.js",
                "~/Scripts/styleswitcher.js",
                "~/Scripts/moderniz.js",
                "~/Scripts/jquery.sparkline.min.js",
                "~/Scripts/slidernav-min.js",
                "~/Scripts/jquery.fancybox.js",
                "~/Scripts/main.js",
                "~/Scripts/application.js",
                "~/Scripts/excanvas.min.js",
                "~/Scripts/float.settings.infobox.js"
            ));

事情是;当我加载页面并查看网络流量时,我看到首先加载了jquery-ui.min.js(在jquery.min.js之前)!

以下是加载顺序: enter image description here

我认为脚本会按照我指定的顺序加载。我错了吗?如果是这样,我应该如何以正确的顺序加载它们?

编辑: 我尝试添加自定义排序,如下所述: http://stevescodingblog.co.uk/changing-the-ordering-for-single-bundles-in-asp-net-4/

但是在构建项目时出现以下错误: 错误1'Namespace.AsIsBundleOrderer'未实现接口成员'System.Web.Optimization.IBundleOrderer.OrderFiles(System.Web.Optimization.BundleContext,System.Collections.Generic.IEnumerable)'

1 个答案:

答案 0 :(得分:0)

可能导致此问题的一些事情:

  • ASP.NET Web Optimization Framework的Buggy版本。更新至1.1.3或更高版本。

  • 显式名称始终在符号名称之前处理。

明确命名为依赖于符号命名的库

Knockout-jqueryui.js名称中没有版本。这取决于jQuery和jQuery UI。这两个都有他们名字的版本。如果你使用像jQuery- {version}这样的符号名称来引用这些库,因为knockout-jqueryui是显式命名的,它将在第一遍中加载 - 在它的依赖之前。

要么明确命名版本,要么将版本号捏合到依赖库名称中,并使它们都符号化。