Dalla beta di asp.net mvc4 sono stati fatti passi avanti nelle API riguardanti i Bundle.
Giusto per informazione, i bundle sono presenti in ASP.NET MVC4 (assembly System.Web.Optimization.dll) e servono per riunire e minificare gruppi di risorse css e js. Questo permette di ridurre il payload e ridurre le connessioni HTTP.
Ci sono molte librerie che svolgono lo stesso compito (es Combres, Cassette ...), ma per i pigri (e chi non vuole troppe dipendenze al di fuori dallo stack ms) ora è tutto integrato.
Alcune novità rispetto alla beta:
- Rimozione del metodo "BundleTable.Bundles.RegisterTemplateBundles()"
Imho bene, tutto a favore di una registrazione manuale.dei bundle. Il template di asp.net mvc4 di default registra i js e css aggiunti automaticamente nel progetto.
E' così possibile da un lato capire come vengono registrate le risorse dall'altro si possono aggiungere le proprie senza troppi problemi.
Rimane disponibile (giustamente) il metodo "BundleTable.Bundles.EnableDefaultBundles()" che raggruppa js e css in base alla struttura a folder della progetto.
- Dichiarazione nelle pagine dei bundle tramite @Script.Render(jspaths) e @Styles.Render(csspaths)
Eccellente. Rispetto a <link href="@System.Web.Optimization.BundleTable.Bundle.ResolveBundleUrl("~/Content/boot/css")" rel="stylesheet" type="text/css" /> è una manna dal cielo. Questo infatti ci permette di avere:
- riduzione del codice scritto
- possibilità di renderizzare più tag script o link in modo di avere risorse non compresse per debug (ottimo!).
- (segue) Il rendering delle risorse è stabilito con due modalità:
1) Tramite Web.config verificando l'attributo debug=true (del tag compilation). Da osservare come questo venga rimosso in fase di publishing tramite web.config transformation (quindi in release le risorse vengono compattate e minificate automaticamente) mentre in fase di sviluppo questo è impostato di default a true e le ottimizzazioni non sono applicate.
2) Tramite chiamata al metodo BundleTable.EnableOptimizatoins=true/false.
In ogni caso, imho, l'impostazione di default è ottima.
Grazie agli ultimi due punti, la libreria optimization è finalmente utilizzabile in modo proficuo. Benone.