J'essaie le Fonctionnalité de ScriptBundle MVC4 System.Web.Optimization 1.0 .
J'ai la configuration suivante :
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);
}
}
et la vue suivante :
<script type="text/javascript" src="@Scripts.Url(BundlePaths.CanvasScripts)"></script>
où BundlePaths.CanvasScripts
es "~/bundles/scripts/canvas"
. Il rend cela :
<script type="text/javascript" src="/bundles/scripts/canvas?v=UTH3XqH0UXWjJzi-gtX03eU183BJNpFNg8anioG14_41"></script>
Jusqu'ici tout va bien, sauf que ~/Scripts/Shared/achievements.js
est le premier script dans la source groupée. Il dépend de chaque script inclus avant lui dans le paquet de sources. ScriptBundle
. Comment puis-je m'assurer qu'il respecte l'ordre dans lequel j'ajoute les déclarations d'inclusion au regroupement ?
Mise à jour
Il s'agissait d'une application ASP.NET MVC 4 relativement récente, mais elle faisait référence au package pre release du framework d'optimisation. Je l'ai supprimé et ajouté le package RTM de http://nuget.org/packages/Microsoft.AspNet.Web.Optimization . Avec la version RTM avec debug=true dans web.config, @Scripts.Render("~/bundles/scripts/canvas")
rend les différentes balises script dans le bon ordre.
Avec debug=false dans web.config, le script combiné a les réalisations.js script en premier, mais comme il s'agit d'une définition de fonction (constructeur d'objet) qui est appelée plus tard, elle s'exécute sans erreur. Peut-être que le mineur est assez intelligent pour comprendre les dépendances ?
J'ai également essayé le IBundleOrderer
que Darin Dimitrov a suggéré avec la RTM avec les deux options de débogage et le comportement est le même.
La version minifiée n'est donc pas dans l'ordre que j'attends, mais elle fonctionne.