Использование ASP.NET пакеты MVC4 jQuery/javascript
когда я создал свой проект со стандартным шаблоном MVC4, было много включенного javascript, e.g: jquery-навязчивый, jquery-проверка, нокаут, весь пользовательский интерфейс jQuery.
сколько из этого стоит держать и сколько выбрасывать? Я заметил, когда вы создаете строго типизированный контроллер create.cshtml просмотр сгенерированных вызовов:
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
что именно делает этот файл? Оставить его себе? Должен ли я ссылаться на все эти файлы JS, которые были первоначально определено в BundleConfig.в CS? Или я могу не беспокоиться..?
2 ответов
что именно делает этот файл?
jqueryval
это не файл, это ссылка на узелок.
пакет в MVC4 представляет собой набор скриптов, стилей или других файлов, объединенных в один пакет.
у вас будет на App_Start
папка, которая содержит настройки того, какой файл добавляется в какой пакет.
bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
"~/Scripts/jquery.unobtrusive*",
"~/Scripts/jquery.validate*"));
как вы можете видеть выше ~/bundles/jqueryval
- виртуальный путь пакета который объединяет указанные в нем файлы. Поэтому позже, когда вы увидите это:
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
выше будут включены сценарии, поставляемые по этой ссылке.
должен ли я оставить его? Должен ли я ссылаться на все эти файлы JS, которые были первоначально определено в BundleConfig.в CS?
в случае jqueryval
bundle вы можете обнаружить, что ненавязчивые и сценарии проверки включены очень полезны.
это скрипты который позаботится об управлении ненавязчивой проверкой, сохраняя ваш дом красивым и чистым.
вы можете удалить пакет с курса, если вам не нужно или не хотите использовать ненавязчивую проверку. Если вы это сделаете, я считаю, что вам также нужно будет обновить свой web.config
, установка обязательных полей в false
чтобы гарантировать, что ваш проект не будет искать файлы, похожие на этот:
<add key="ClientValidationEnabled" value="false" />
<add key="UnobtrusiveJavaScriptEnabled" value="false" />
преимущество и точная разница между использованием навязчивого и ненавязчивого проверка объясняется очень хорошо в этой статье: Брэд Уилсон: ненавязчивая проверка клиента в ASP.NET MVC 3
в общем, я бы предположил, что хорошо включать только то, что вам нужно. Если вам не нужны все файлы, указанные в пакете, удалите эти файлы, исключите пакет вместе или создайте свои собственные пакеты.
проб и ошибок. Если вы удалите их и найдете случайные исключения в консоли отладчика браузера, попробуйте добавление некоторых файлов / пакетов обратно.
вообще, связывать также работает с стиль-листами:
bundles.Add(new StyleBundle("~/Content/themes/base/css").Include(
"~/Content/themes/base/jquery.ui.core.css",
"~/Content/themes/base/jquery.ui.resizable.css",
"~/Content/themes/base/jquery.ui.selectable.css",
"~/Content/themes/base/jquery.ui.accordion.css",
"~/Content/themes/base/jquery.ui.autocomplete.css",
"~/Content/themes/base/jquery.ui.button.css",
"~/Content/themes/base/jquery.ui.dialog.css",
"~/Content/themes/base/jquery.ui.slider.css",
"~/Content/themes/base/jquery.ui.tabs.css",
"~/Content/themes/base/jquery.ui.datepicker.css",
"~/Content/themes/base/jquery.ui.progressbar.css",
"~/Content/themes/base/jquery.ui.theme.css"));
преимущество для разработчика заключается только в том, чтобы ссылаться на отдельный пакет вместо нескольких файлов.
преимущество для клиента заключается в том, сколько отдельных загрузок браузер должен сделать, чтобы получить скрипты/css-файлы.
если у вас, например, есть ссылки на 5 файлов в вашем представлении, клиентский браузер загрузит все 5 отдельно и есть ограничение в каждом браузере, сколько файлов можно загрузить одновременно. Это означает, что если клиент имеет более медленное соединение, они могут подождать несколько секунд до загрузки файлов.
однако, если у вас есть все 5 файлов, настроенных на один пакет, браузер загружает только 1 файл, в комплекте.
кроме того, пакеты минимизируются (или файлы в пакетах), поэтому вы не только экономите время, необходимое для загрузки скрипты, но вы также экономите на размер файла.
когда вы проверяете это, обратите внимание, что в режиме отладки нет разницы, вам нужно быть в режиме выпуска или включить оптимизацию таблицы пакетов в BundleConfig.cs
файл в нижней части RegisterBundles
метод.
BundleTable.EnableOptimizations = true;
вам не нужно использовать пакеты, вы все еще можете свободно ссылаться на отдельные скрипты / css-файлы. Это делает вещи проще, хотя, когда вам это нужно.
MVC4 и .Net Framework 4.5 предлагают методы связывания и минимизации, которые уменьшают количество запросов к серверу и размер запрашиваемой библиотеки CSS и JavaScript, которые улучшают время загрузки страницы в простом word производительность страницы увеличивается, а страница загружается быстрее.