Я разработал сайт MVC 4
. Теперь у меня возникла проблема с временем загрузки ресурсов и выполнением скриптов. Потому что библиотеки, имеющие более высокий приоритет (например, jQuery
) и должны запускаться с первой, но загружаться позже других, а сценарии зависят от загруженных и запущенных ранее, вызывают ошибки!Как заказать пакеты MVC в async-загрузке?
Мои связки скриптов:
bundles.Add(new ScriptBundle("~/bundles/scripts").Include(
"~/Scripts/jquery-{version}.js",
"~/Scripts/jquery-migrate.min.js",
"~/Scripts/jquery.unobtrusive-ajax.min.js",
"~/Scripts/jquery.knob.min.js",
"~/Scripts/toastr.min.js",
"~/Scripts/bootstrap.min.js",
"~/Scripts/respond.js",
"~/Scripts/bootstrap-select.min.js",
"~/Scripts/smoothscrool.js",
"~/Scripts/scrollReveal.js",
"~/Scripts/easing.min.js",
"~/Scripts/site.js"));
bundles.Add(new ScriptBundle("~/bundles/contact").Include(
"~/Scripts/contact.js"));
Это мой макет:
<!DOCTYPE html>
<html lang="en">
<head>
</head>
<body>
@Scripts.RenderFormat("<script type=\"text/javascript\" src=\"{0}\" async></script>", "~/bundles/scripts")
<div id="page-content">
@RenderBody()
</div>
@RenderSection("scripts", required: false)
</body>
</html>
Как вы можете видеть, в начале тела, сценарии должны быть загружены асинхронной:
@Scripts.RenderFormat("<script type=\"text/javascript\" src=\"{0}\" async></script>", "~/bundles/scripts")
И это мои контактные данные бритвенных кодов:
@section scripts
{
@Scripts.Render("~/bundles/contact")
}
<div>
Contact Contents
</div>
Теперь, хотя сценарий раздела загружен в конце тела. Но из-за асинхронной загрузки ресурсов зависимый скрипт загружен раньше (поскольку он более компактен, чем сценарии макета) и вызвал ошибку!
Как заставить зависимые скрипты запускать после запуска всех асинхронных скриптов макета??
Звучит, как вы хотите, чтобы вещь просто выплевывала один тег/файл со всем, что было заказано правильно. https://msdn.microsoft.com/en-us/library/system.web.optimization.scripts.renderformat(v=vs.110).aspx * RenderFormat генерирует теги сценариев для предоставленных путей с использованием указанной строки формата. Он генерирует несколько тегов сценариев для каждого элемента в пакете, если для параметра EnableOptimizations установлено значение false. Когда оптимизация включена, он генерирует один тег сценария к URL-адресу с меткой версии, который представляет весь пакет. Однако вам понадобится один пакет для каждого вида с помощью скриптов. –
@ ta.speot.is EnableOptimizations - это правда. Мой скрипт contact.js, который используется только в контакте «Контакт». Итак, это право добавить его в пакет компоновки, тогда этот скрипт загружается на все страницы! – Behzad
* Вам понадобится один комплект для каждого вида * –