为啥 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 时事务也会回滚?