MVC4バンドルの{version}ワイルドカード


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でどのように機能しますか?
pavsaund 2013年

18
これは正規表現なので、すべての一致が含まれるため、同じディレクトリに複数のバージョンがある場合は、おそらくこれを使用したくないでしょう。
Hao Kung

3
{version}はパス内では機能しないようです。仕事では、パスに(ファイル名ではなく)ブートストラップのバージョンがあるので、これを実行しようとしています: "〜/ Content / Libraries / bootstrap / {version} /css/bootstrap.css"しかし、実行するとRegisterBundles、「ディレクトリが存在しません」というArgumentExceptionが発生します。
マイケルネルソン

4
ディレクトリで機能しないことに賛成票を投じてください。ディレクトリで機能させるための解決策はありますか?
Zapnologica 2014年

3
編集:気にしないでください、彼らはここでそれを明確に説明しています!asp.net/mvc/overview/performance/bundling-and-minification ありがとうございます!
Jon Koeter

12

このバンドルは、スクリプト名にバージョン番号を含めることができます。したがって、jQueryをアプリケーションで(NuGet経由または手動で)新しいバージョンに更新する場合、コードやマークアップを変更する必要はありません。

バンドルの詳細については、次のリンクを参照してください。http//weblogs.asp.net/jgalloway/archive/2012/08/16/asp-net-4-5-asp-net-mvc-4-asp-net- web-pages-2-and-visual-studio-2012-web-developer-features.aspx


3
古いバージョンが実際に削除されていることを確認する限り。
Triynko

{バージョン}を使用すると、Jqueryが未定義であり、実際のバージョンで置き換えると、私の場合3.1.1で正常に動作します。
Marc Roussel 2017

0

~/Scripts/jquery-{version}.js含まれています。ここで、バンドルシステムは、パスで{version}セレクターを指定したときにjqueryファイルの最新バージョンを参照するのに十分スマートです。また、このバンドルシステムは、定義されたパスで利用可能な場合、ファイルの縮小版を選択するのに十分スマートです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.