Saya mencoba fitur MVC4 System.Web.Optimization 1.0 ScriptBundle .
Saya memiliki konfigurasi berikut:
public class BundleConfig
{
public static void RegisterBundles(BundleCollection bundles)
{
// shared scripts
Bundle canvasScripts =
new ScriptBundle(BundlePaths.CanvasScripts)
.Include("~/Scripts/modernizr-*")
.Include("~/Scripts/json2.js")
.Include("~/Scripts/columnizer.js")
.Include("~/Scripts/jquery.ui.message.min.js")
.Include("~/Scripts/Shared/achievements.js")
.Include("~/Scripts/Shared/canvas.js");
bundles.Add(canvasScripts);
}
}
dan tampilan berikut:
<script type="text/javascript" src="@Scripts.Url(BundlePaths.CanvasScripts)"></script>
di mana BundlePaths.CanvasScripts
adalah "~/bundles/scripts/canvas"
. Ini membuat ini:
<script type="text/javascript" src="/bundles/scripts/canvas?v=UTH3XqH0UXWjJzi-gtX03eU183BJNpFNg8anioG14_41"></script>
Sejauh ini bagus, kecuali ~/Scripts/Shared/achievements.js
adalah skrip pertama dalam sumber yang dibundel. Itu tergantung pada setiap skrip yang disertakan sebelumnya di ScriptBundle
. Bagaimana saya bisa memastikan bahwa itu menghormati urutan di mana saya menambahkan pernyataan include ke bundel?
Memperbarui
Ini adalah aplikasi ASP.NET MVC 4 yang relatif baru, tetapi merujuk pada paket pra rilis kerangka kerja pengoptimalan. Saya menghapusnya dan menambahkan paket RTM dari http://nuget.org/packages/Microsoft.AspNet.Web.Optimization . Dengan versi RTM dengan debug = true di web.config, @Scripts.Render("~/bundles/scripts/canvas")
merender tag skrip individual dalam urutan yang benar.
Dengan debug = false di web.config, skrip gabungan memiliki skrip achievement.js terlebih dahulu, tetapi karena itu adalah definisi fungsi (konstruktor objek) yang dipanggil kemudian, skrip ini berjalan tanpa kesalahan. Mungkin penambang cukup pintar untuk mengetahui dependensi?
Saya juga mencoba IBundleOrderer
implementasi yang disarankan Darin Dimitrov dengan RTM dengan kedua opsi debug dan berperilaku sama.
Jadi, versi yang diperkecil tidak dalam urutan yang saya harapkan, tetapi berfungsi.