Ich probiere die MVC4 System.Web.Optimization 1.0 ScriptBundle-Funktion aus .
Ich habe die folgende Konfiguration:
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);
}
}
und die folgende Ansicht:
<script type="text/javascript" src="@Scripts.Url(BundlePaths.CanvasScripts)"></script>
wo BundlePaths.CanvasScripts
ist "~/bundles/scripts/canvas"
. Es macht dies:
<script type="text/javascript" src="/bundles/scripts/canvas?v=UTH3XqH0UXWjJzi-gtX03eU183BJNpFNg8anioG14_41"></script>
So weit so gut, außer ~/Scripts/Shared/achievements.js
das erste Skript in der gebündelten Quelle. Es hängt von jedem Skript ab, das zuvor in der ScriptBundle
. Wie kann ich sicherstellen, dass die Reihenfolge eingehalten wird, in der ich dem Bundle Include-Anweisungen hinzufüge?
Aktualisieren
Dies war eine relativ neue ASP.NET MVC 4-Anwendung, die jedoch auf das Pre-Release-Paket des Optimierungsframeworks verwies. Ich habe es entfernt und das RTM-Paket von http://nuget.org/packages/Microsoft.AspNet.Web.Optimization hinzugefügt . Bei der RTM-Version mit debug = true in web.config werden @Scripts.Render("~/bundles/scripts/canvas")
die einzelnen Skript-Tags in der richtigen Reihenfolge gerendert .
Mit debug = false in web.config verfügt das kombinierte Skript zuerst über das Skript settings.js. Da es sich jedoch um eine später aufgerufene Funktionsdefinition (Objektkonstruktor) handelt, wird es fehlerfrei ausgeführt. Vielleicht ist der Minifier klug genug, um Abhängigkeiten herauszufinden?
Ich habe auch die IBundleOrderer
Implementierung ausprobiert, die Darin Dimitrov mit RTM mit beiden Debug-Optionen vorgeschlagen hat, und sie hat sich gleich verhalten.
Die verkleinerte Version ist also nicht in der von mir erwarteten Reihenfolge, aber sie funktioniert.