222 votes

Pourquoi utiliser @scripts.Render("~/bundles/jquery")

Comment les

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

diffère de la simple référence au script du html comme ceci

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

Y a-t-il des gains de performance ?

0 votes

Comment ajouter le type="text/css" ? stackoverflow.com/questions/15662096/

294voto

yan.kun Points 4054

Le regroupement consiste à compresser plusieurs fichiers JavaScript ou feuilles de style sans aucun formatage (également appelés "minifiés") en un seul fichier afin d'économiser de la bande passante et de réduire le nombre de requêtes de chargement d'une page.

Vous pouvez par exemple créer votre propre offre groupée :

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"))

Et rendez-le ainsi :

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

Un autre avantage de @Scripts.Render("~/bundles/mybundle") sur l'autochtone <script src="~/bundles/mybundle" /> est que @Scripts.Render() respectera la web.config paramètre de débogage :

  <system.web>
    <compilation debug="true|false" />

Si debug="true" alors il rendra les balises script individuelles pour chaque script source, sans aucune minification.

Pour les feuilles de style, vous devrez utiliser un StyleBundle et @Styles.Render().

Au lieu de charger chaque script ou style avec une seule requête (avec les balises script ou link), tous les fichiers sont compressés dans un seul fichier JavaScript ou feuille de style et chargés ensemble.

9 votes

Je me demande simplement s'il existe un fichier stocké quelque part pour cette offre groupée ou si elle existe simplement en mémoire.

4 votes

Il peut également être configuré pour utiliser automatiquement un CDN et revenir à des scripts locaux si le CDN n'est pas disponible. C'est assez astucieux.

39 votes

Il y a un avantage supplémentaire à le faire. Lors du débogage, scripts.Render produira chaque fichier non groupé, ce qui rend le développement local beaucoup moins pénible, mais dans un environnement réel, cela produira le résultat groupé/minifié, ce qui peut conduire à des gains de performance tels que décrits ci-dessus, mais sans changer de code.

51voto

Termato Points 353

Vous pouvez également utiliser :

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

Pour spécifier le format de votre sortie dans un scénario où vous devez utiliser Charset, Type, etc.

3 votes

Egalement très utile pour charger les modules requirejs

13 votes

...ou d'ajouter le async attribut.

7 votes

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X