2012-08-30 2 views
199

WieWarum Gebrauch @ Scripts.Render ("~/Bündel/jquery")

@Scripts.Render("~/bundles/jquery") 

unterscheiden sich von nur Referenzierung das Skript von HTML-ähnliche

<script src="~/bundles/jquery.js" type="text/javascript"></script> 

es irgendwelche Performance-Gewinne?

+0

Wie ich Typ hinzufügen tun = „text/css "- http://stackoverflow.com/questions/15662096/how-do-i-add-type-text-css-to-a-script-tag-when-using-system-web-optimization – Lijo

Antwort

262

Bei der Bündelung geht es darum, mehrere JavaScript- oder Stylesheet-Dateien ohne Formatierung (auch als "minified" bezeichnet) in eine einzige Datei zu komprimieren, um die Bandbreite und die Anzahl der Anforderungen zum Laden einer Seite zu speichern.

Als Beispiel könnten Sie Ihr eigenes Paket erstellen:

bundles.Add(New ScriptBundle("~/bundles/mybundle").Include(
      "~/Resources/Core/Javascripts/jquery-1.7.1.min.js", 
      "~/Resources/Core/Javascripts/jquery-ui-1.8.16.min.js", 
      "~/Resources/Core/Javascripts/jquery.validate.min.js", 
      "~/Resources/Core/Javascripts/jquery.validate.unobtrusive.min.js", 
      "~/Resources/Core/Javascripts/jquery.unobtrusive-ajax.min.js", 
      "~/Resources/Core/Javascripts/jquery-ui-timepicker-addon.js")) 

Und es so machen:

@Scripts.Render("~/bundles/mybundle") 

Für Stylesheets finden Sie eine StyleBundle und @ Styles.Render() verwenden.

Anstatt jedes Skript oder jeden Stil mit einer einzigen Anfrage (mit Skript- oder Link-Tags) zu laden, werden alle Dateien in einer einzelnen JavaScript- oder Stylesheet-Datei komprimiert und zusammen geladen.

+8

Nur wundernd: ist Gibt es irgendwo eine Datei für dieses Paket oder existiert sie nur im Speicher? – Elliot

+15

Es ist im Cache gespeichert. – NicoJuicy

+4

Es kann auch festgelegt werden, dass automatisch ein CDN und ein Fallback für lokale Skripts verwendet werden, wenn das CDN nicht verfügbar ist. Es ist ziemlich glatt. –

45

Sie können auch verwenden:

@Scripts.RenderFormat("<script type=\"text/javascript\" src=\"{0}\"></script>", "~/bundles/mybundle") 

das Format der Ausgabe in einem Szenario angeben, in dem Zeichensatz verwenden müssen, Typ, usw.

+3

Auch sehr nützlich zum Laden von requirejs Modulen – Phil

+12

... oder um das 'async' Attribut hinzuzufügen: – ChrFin

+6

' @Scripts .RenderFormat ("", "~/bundles/mybundle") ' –