{версия} подстановочный знак в 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

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

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

leoli
источник