J'essaye la fonctionnalité MVC4 System.Web.Optimization 1.0 ScriptBundle .
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
est "~/bundles/scripts/canvas"
. Il rend ceci:
<script type="text/javascript" src="/bundles/scripts/canvas?v=UTH3XqH0UXWjJzi-gtX03eU183BJNpFNg8anioG14_41"></script>
Jusqu'ici tout va bien, sauf ~/Scripts/Shared/achievements.js
le premier script de la source fournie. Cela dépend de chaque script inclus avant dans le fichier ScriptBundle
. Comment puis-je m'assurer qu'il respecte l'ordre dans lequel j'ajoute des instructions d'inclusion à l'ensemble?
Mettre à jour
Il s'agissait d'une application ASP.NET MVC 4 relativement nouvelle, mais elle faisait référence au package de pré-version 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")
restitue les balises de script individuelles dans le bon ordre.
Avec debug = false dans web.config, le script combiné a d'abord le script réalisations.js, mais comme il s'agit d'une définition de fonction (constructeur d'objet) appelée plus tard, il s'exécute sans erreur. Peut-être que le minificateur est assez intelligent pour comprendre les dépendances?
J'ai également essayé l' IBundleOrderer
implémentation suggérée par Darin Dimitrov avec RTM avec les deux options de débogage et elle s'est comportée de la même manière.
La version minifiée n'est donc pas dans l'ordre que j'attends, mais cela fonctionne.