{version} wildcard di MVC4 Bundle

155

Di MVC 4 kami memiliki bundel. Saat mendefinisikan bundel, kita dapat menggunakan wildcard seperti * untuk semua file dalam folder.

Dalam contoh di bawah ini, apa -{version}artinya?

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

Jawaban:

177

The -{version}dasarnya peta ke versi regex , atau tepatnya: (\d+(?:\.\d+){1,3}).
Menggunakan *cenderung mengambil terlalu banyak, misalnya jika Anda bundel jquery*, itu termasuk jquery-uijuga yang mungkin mengacaukan pemesanan. Tetapi menggunakan jquery-{version}.jsakan membiarkan Anda menghindari harus memperbarui definisi bundel Anda setiap kali Anda meningkatkan jquery.

Hal-hal tambahan yang perlu diperhatikan:

  • {version} hanya berfungsi untuk bagian terakhir jalur - pada dasarnya nama file - bukan direktori.
  • beberapa versi jquery di folder yang sama semuanya akan terjebak.
Hao Kung
sumber
2
Bagaimana ini akan bekerja dengan beberapa versi ex: jquery hadir di folder?
pavsaund
18
Ini adalah regex sehingga akan mencakup semua kecocokan, jadi jika Anda memiliki banyak versi di direktori yang sama, Anda mungkin tidak ingin menggunakan ini.
Hao Kung
3
Perhatikan bahwa {version} tampaknya tidak berfungsi di dalam jalur. Di tempat kerja, kami memiliki versi bootstrap di path (bukan di nama file), jadi saya mencoba melakukan ini: "~ / Content / Libraries / bootstrap / {version} /css/bootstrap.css" Tetapi ketika saya menjalankan RegisterBundles, saya mendapatkan ArgumentException yang mengatakan "Direktori tidak ada."
Michael Nelson
4
pilih untuk tidak bekerja di direktori. Ada solusi untuk membuatnya bekerja di direktori?
Zapnologica
3
Sunting: tidak pernah, mereka jelas menjelaskannya di sini! asp.net/mvc/overview/performance/bundling-and-minification Terima kasih!
Jon Koeter
12

Bundel ini dapat mengakomodasi nomor versi dalam nama skrip. Jadi memperbarui jQuery ke versi baru di aplikasi Anda (melalui NuGet atau secara manual) tidak memerlukan perubahan kode / markup.

Lihat tautan berikut untuk informasi lebih lanjut tentang bundling: 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

MUG4N
sumber
3
Selama Anda memastikan versi lama benar-benar dihapus.
Triynko
Saat menggunakan {versi} saya menerima Jquery tidak terdefinisi dan ketika saya ganti dengan versi yang sebenarnya, dalam kasus saya 3.1.1 berfungsi dengan baik.
Marc Roussel
0

~/Scripts/jquery-{version}.jstermasuk di dalamnya. Di sini sistem bundling cukup pintar untuk mereferensikan versi file jquery tertinggi ketika kami menentukan pemilih {version} di path. Juga, sistem bundling ini cukup pintar untuk memilih versi file yang diperkecil, jika tersedia di jalur yang ditentukan.

leoli
sumber