{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"));
}

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.

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


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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.