{версия} подстановочный знак в MVC4 Bundle


155

В MVC 4 у нас есть связки. При определении пакетов мы можем использовать подстановочные знаки, такие как *, для всех файлов в папке.

В приведенном ниже примере, что -{version}означает?

public static void RegisterBundles(BundleCollection bundles)
{
    bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
        "~/Scripts/jquery-{version}.js"));
}

Ответы:


177

-{version}Основном отображает в версии регулярных выражений , или, если быть точным: (\d+(?:\.\d+){1,3}).
Использование *имеет тенденцию захватывать слишком много, например, если вы связываете jquery*, это также включает jquery-uiв себя, что может испортить порядок. Но использование jquery-{version}.jsпозволит вам избежать необходимости обновлять определение вашего пакета каждый раз, когда вы обновляете jquery.

Дополнительные вещи к сведению:

  • {version} работает только для последней части пути - в основном имя файла - не каталог.
  • несколько версий jquery в одной и той же папке будут все пойманы.

2
Как это будет работать с несколькими версиями ex: jquery, представленными в папке?
Павсаунд

18
Это регулярное выражение, поэтому оно будет включать все совпадения, поэтому, если у вас есть несколько версий в одном каталоге, вы, вероятно, не захотите использовать это.
Хао Кунг

3
Обратите внимание, что {версия} не работает в пути. На работе у нас есть версия начальной загрузки в пути (не в имени файла), поэтому я пытаюсь сделать это: "~ / Content / Libraries / bootstrap / {версия} /css/bootstrap.css" Но когда я запускаю RegisterBundles, я получаю ArgumentException, который говорит: «Каталог не существует».
Майкл Нельсон

4
голосовать за не работает в каталоге. Какие-нибудь решения, чтобы заставить это работать в каталоге?
Zapnologica

3
Редактировать: неважно, они четко объясняют это здесь! asp.net/mvc/overview/performance/bundling-and-minification Спасибо!
Джон Кётер

12

Этот пакет может содержать номера версий в именах скриптов. Поэтому обновление jQuery до новой версии в вашем приложении (через NuGet или вручную) не требует каких-либо изменений кода / разметки.

См. Следующую ссылку для получения дополнительной информации о комплектации: http://weblogs.asp.net/jgalloway/archive/2012/08/16/asp-net-4-5-asp-net-mvc-4-asp-net- веб-страниц-2-и-зрительно-студия-2012-веб-разработчик-features.aspx


3
Пока вы убедитесь, что старые версии действительно удалены.
Триынко

При использовании {version} я получаю, что Jquery не определен, и когда я заменяю его актуальной версией, в моем случае 3.1.1 он работает нормально.
Марк Руссель

0

~/Scripts/jquery-{version}.jsвходит в это. Здесь система связывания достаточно умна, чтобы ссылаться на самую высокую версию файла jquery, когда мы указали селектор {версия} в пути. Кроме того, эта система связывания достаточно умна, чтобы выбрать минимизированную версию файла, если она доступна по указанному пути.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.