Platzhalter {version} im MVC4-Bundle

155

In MVC 4 haben wir Bundles. Beim Definieren der Bundles können wir Platzhalter wie * für alle Dateien in einem Ordner verwenden.

Was bedeutet im folgenden Beispiel -{version}?

public static void RegisterBundles(BundleCollection bundles)
{
    bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
        "~/Scripts/jquery-{version}.js"));
}
Ricardo Polo Jaramillo
quelle

Antworten:

177

Das entspricht im -{version}Grunde einer Version Regex , oder genauer gesagt : (\d+(?:\.\d+){1,3}).
Die Verwendung von *neigt dazu, zu viel zu greifen, zum Beispiel wenn Sie bündeln jquery*, schließt dies jquery-uiauch ein, was die Bestellung durcheinander bringen könnte. Aber mitjquery-{version}.js der Option müssen Sie jedoch vermeiden, dass Sie Ihre Bundle-Definition jedes Mal aktualisieren müssen, wenn Sie jquery aktualisieren.

Zusätzliche Dinge zu beachten:

  • {version} Funktioniert nur für den letzten Teil des Pfads - im Grunde genommen den Dateinamen - nicht für ein Verzeichnis.
  • Mehrere Versionen von jquery im selben Ordner werden alle eingeholt.
Hao Kung
quelle
2
Wie würde dies mit mehreren Versionen von ex: jquery funktionieren, die im Ordner vorhanden sind?
Pavsaund
18
Es ist ein regulärer Ausdruck, der alle Übereinstimmungen enthält. Wenn Sie also mehrere Versionen im selben Verzeichnis hätten, würden Sie dies wahrscheinlich nicht verwenden wollen.
Hao Kung
3
Beachten Sie, dass {version} nicht innerhalb eines Pfads zu funktionieren scheint. Bei der Arbeit haben wir die Bootstrap-Version im Pfad (nicht im Dateinamen), also versuche ich dies: "~ / Content / Libraries / bootstrap / {version} /css/bootstrap.css" Aber wenn ich laufe RegisterBundles, ich erhalte eine ArgumentException mit der Meldung "Verzeichnis existiert nicht".
Michael Nelson
4
Stimmen Sie ab, wenn Sie nicht in einem Verzeichnis arbeiten. Gibt es Lösungen, um es in einem Verzeichnis zum Laufen zu bringen?
Zapnologica
3
Edit: egal, sie erklären es hier klar! asp.net/mvc/overview/performance/bundling-and-minification Vielen Dank!
Jon Koeter
12

Dieses Bundle kann Versionsnummern in Skriptnamen aufnehmen. Das Aktualisieren von jQuery auf eine neue Version in Ihrer Anwendung (über NuGet oder manuell) erfordert also keine Code- / Markup-Änderungen.

Weitere Informationen zum Bündeln finden Sie unter folgendem Link: http://weblogs.asp.net/jgalloway/archive/2012/08/16/asp-net-4-5-asp-net-mvc-4-asp-net- Webseiten-2-und-Visual-Studio-2012-Webentwickler-Features.aspx

MUG4N
quelle
3
Solange Sie sicherstellen, dass die alten Versionen tatsächlich entfernt werden.
Triynko
Bei Verwendung von {version} erhalte ich, dass Jquery undefiniert ist, und wenn ich durch die aktuelle Version ersetze, funktioniert es in meinem Fall 3.1.1 einwandfrei.
Marc Roussel
0

~/Scripts/jquery-{version}.jsist darin enthalten. Hier ist das Bündelungssystem intelligent genug, um auf die höchste Version der JQuery-Datei zu verweisen, wenn wir im Pfad den Selektor {version} angegeben haben. Dieses Bündelsystem ist auch intelligent genug, um die minimierte Version der Datei auszuwählen, sofern diese unter dem definierten Pfad verfügbar ist.

Leoli
quelle