ฉันพยายามออกคุณลักษณะ ScriptBundle MVC4 System.Web.Optimization 1.0
ฉันมีการกำหนดค่าต่อไปนี้:
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);
}
}
และมุมมองต่อไปนี้:
<script type="text/javascript" src="@Scripts.Url(BundlePaths.CanvasScripts)"></script>
ที่เป็นBundlePaths.CanvasScripts
"~/bundles/scripts/canvas"
มันทำให้สิ่งนี้:
<script type="text/javascript" src="/bundles/scripts/canvas?v=UTH3XqH0UXWjJzi-gtX03eU183BJNpFNg8anioG14_41"></script>
จนถึงตอนนี้ดีมากยกเว้น~/Scripts/Shared/achievements.js
เป็นสคริปต์แรกในซอร์สที่รวม ขึ้นอยู่กับทุกสคริปต์ที่รวมอยู่ก่อนหน้านั้นในไฟล์ScriptBundle
. ฉันจะมั่นใจได้อย่างไรว่าจะเป็นไปตามลำดับที่ฉันเพิ่มคำสั่งรวมลงในชุด
อัปเดต
นี่เป็นแอปพลิเคชัน ASP.NET MVC 4 ที่ค่อนข้างใหม่ แต่กำลังอ้างอิงถึงแพ็คเกจก่อนวางจำหน่ายของเฟรมเวิร์กการเพิ่มประสิทธิภาพ ฉันลบมันและเพิ่มแพคเกจ RTM จากhttp://nuget.org/packages/Microsoft.AspNet.Web.Optimization ด้วยเวอร์ชัน RTM ที่มี debug = true ใน web.config@Scripts.Render("~/bundles/scripts/canvas")
แสดงแท็กสคริปต์แต่ละแท็กตามลำดับที่ถูกต้อง
ด้วย debug = false ใน web.config สคริปต์ที่รวมจะมีสคริปต์ successments.js ก่อน แต่เนื่องจากเป็นนิยามฟังก์ชัน (ตัวสร้างวัตถุ) ที่เรียกในภายหลังจึงทำงานโดยไม่มีข้อผิดพลาด บางที minifier อาจฉลาดพอที่จะคิดหาการอ้างอิง?
ฉันยังลอง IBundleOrderer
ใช้งานที่ Darin Dimitrov แนะนำกับ RTM ด้วยตัวเลือกการดีบักทั้งสองตัวและมันก็ทำงานเหมือนกัน
ดังนั้นเวอร์ชันที่ลดขนาดจึงไม่อยู่ในลำดับที่ฉันคาดหวัง แต่ใช้งานได้