मैं MVC4 System.Web.Optimization 1.0 ScriptBundle feature को आजमा रहा हूं।मैं एक स्पष्ट स्क्रिप्टबंडल को ऑर्डर कैसे निर्दिष्ट कर सकता हूं?
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"
है
मैं निम्नलिखित विन्यास है। यह इस renders:
<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 से आरटीएम पैकेज जोड़ा। Web.config में डीबग = सत्य के साथ आरटीएम संस्करण के साथ, @Scripts.Render("~/bundles/scripts/canvas")
सही क्रम में व्यक्तिगत स्क्रिप्ट टैग प्रस्तुत करता है।
web.config में डीबग = झूठी के साथ, संयुक्त स्क्रिप्ट में achievements.js स्क्रिप्ट पहले होती है, लेकिन चूंकि इसकी फ़ंक्शन परिभाषा (ऑब्जेक्ट कन्स्ट्रक्टर) जिसे बाद में कहा जाता है, यह बिना त्रुटि के चलाता है। शायद minifier निर्भरता को समझने के लिए पर्याप्त स्मार्ट है?
मैंने IBundleOrderer
कार्यान्वयन की भी कोशिश की कि डारिन डिमिट्रोव ने दोनों डीबग विकल्पों के साथ आरटीएम के साथ सुझाव दिया और यह वही व्यवहार किया।
तो छोटा संस्करण मैं अपेक्षा करता हूं कि आदेश में नहीं है, लेकिन यह काम करता है।
मैंने 1.0 संस्करण में अपग्रेड किया। मेरा अद्यतन प्रश्न देखें। Achievements.js की सामग्री को पहले संशोधित संस्करण में शामिल किया गया है, लेकिन यह बाद में नामित एक फ़ंक्शन के बाद से काम करता है। – jrummell