मैं MVC4 System.Web.Optimization 1.0 ScriptBundle फीचर को आज़मा रहा हूँ ।
मेरे पास निम्न कॉन्फ़िगरेशन है:
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 अनुप्रयोग था, लेकिन यह ऑप्टिमाइज़ेशन फ्रेमवर्क प्री रिलीज़ पैकेज का संदर्भ दे रहा था। मैंने इसे हटा दिया और http://nuget.org/packages/Microsoft.AspNet.Web.Optimization से RTM पैकेज जोड़ा । RTM संस्करण के साथ debug = true में web.config, @Scripts.Render("~/bundles/scripts/canvas")
अलग-अलग स्क्रिप्ट टैग को सही क्रम में प्रस्तुत करता है।
Web.config में debug = false के साथ, संयुक्त स्क्रिप्ट में उपलब्धियां हैं। पहले स्क्रिप्ट, लेकिन चूंकि इसकी फ़ंक्शन परिभाषा (ऑब्जेक्ट कंस्ट्रक्टर) जिसे बाद में कहा जाता है, यह त्रुटि के बिना चलता है। शायद minifier निर्भरता का पता लगाने के लिए काफी स्मार्ट है?
मैंने यह भी IBundleOrderer
लागू करने की कोशिश की कि डारिन दिमित्रोव ने आरटीएम के साथ दोनों डिबग विकल्पों के साथ सुझाव दिया और इसने समान व्यवहार किया।
इसलिए कीमा बनाया हुआ संस्करण मेरे द्वारा अपेक्षित क्रम में नहीं है, लेकिन यह काम करता है।