为啥 jquery 会加载第二个,即使它是在 mvc 捆绑配置文件的第一个位置定义的?

Posted

技术标签:

【中文标题】为啥 jquery 会加载第二个,即使它是在 mvc 捆绑配置文件的第一个位置定义的?【英文标题】:Why jquery loads second even it is defined at the first place in mvc bundle config file?为什么 jquery 会加载第二个,即使它是在 mvc 捆绑配置文件的第一个位置定义的? 【发布时间】:2016-08-11 21:34:34 【问题描述】:

正如问题所说的那样,我首先将 jquery 文件包含在我的捆绑配置中的 asp.net mvc 应用程序中,如下所示:

bundles.Add(new ScriptBundle("~/bundles/ozhay").Include(
                        "~/Scripts/jquery.min.js",
                        "~/Scripts/jquery-migrate.min.js",
                        "~/Scripts/jquery.slimscroll.min.js",
                        "~/Scripts/jquery.fancybox.pack.js",
                        "~/Scripts/jquery.owl.carousel.min.js",
                        "~/Scripts/jquery.zoom.min.js",
                        "~/Scripts/bootstrap.min.js",
                        "~/Scripts/back-to-top.js",
                        "~/Scripts/bootstrap.touchspin.js",
                        "~/Scripts/layout.js",
                        "~/Scripts/bs-carousel.js"
                ));

但是当我在 firefox 或 IE 上查看源代码时,我看到 jquery 在第二个位置加载,下图显示了详细信息:

这是我在布局页面中在RenderBody() 之后呈现脚本包的方式:

@Scripts.Render("~/bundles/ozhay")

注意:我的应用程序中有两个不同版本的 jquery,V1.10.2 和 V1.11.2。版本 1.10.2 由 MVC 模板安装,第二个版本 1.11.2 我将其添加到脚本中,因为我将其用于预制模板(设计)。

谢谢!

【问题讨论】:

【参考方案1】:

您的问题与捆绑无关。 捆绑配置仅用于缩小、优化您的脚本和样式。 此问题是由浏览器引起的,因为在下载所有 html、CSS、图像和其他内容之前,您的脚本不会被看到。

为了快速解决您应该尝试一些脚本文件的命名约定,例如:

      "~/Scripts/jquery.min1.js",
      "~/Scripts/jquery-migrate.min2.js",
      "~/Scripts/jquery.slimscroll.min3.js"

或(效果更好,但令人困惑)

      "~/Scripts/1.js",
      "~/Scripts/2.js",
      "~/Scripts/3.js"

对于强制加载脚本文件顺序的更复杂的方法,您应该使用 javascript 加载它,但这种解决方案的缺点是脚本启动速度较慢,因为您的所有文件必须首先由 JS 加载。 有关更多信息,请查看此线程load and execute order of scripts

【讨论】:

以上是关于为啥 jquery 会加载第二个,即使它是在 mvc 捆绑配置文件的第一个位置定义的?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的第二个加载的子应用程序在 FlexEvent.INITIALIZE 之后停止

为啥即使在 Spring 服务类的第二个方法中传播 = Propagation.REQUIRES_NEW 时事务也会回滚?

使用 Jquery 的页面加载时间

第二个 jQuery 加载日期选择器不工作

使用 jQuery 重置选择框值

为啥 gtkmm 有时会自动创建第二个线程?