Использование 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 производительность страницы увеличивается, а страница загружается быстрее.