2009-12-22 9 views
7

Abbiamo una manciata di pagine ASP.net che includono oltre 50 linee di javascript specifiche per quella pagina. Ci piacerebbe minimizzare quel javascript durante il nostro processo di compilazione CruiseControl.Minify javascript in linea durante la compilazione per ASP.net?

Utilizziamo già il compressore YUI per comprimere i nostri file javascript e css completi. Ma non riusciamo a capire come fare il javascript Inline.

Esiste un compito di MSBuild per scorrere tra le pagine di asp.net e ridurre il javascript?

risposta

4

C'è un blog interessante e NuGet pacchetto chiamato undleMinifyInlineJsCss per gestire questa

http://weblogs.asp.net/imranbaloch/archive/2012/07/25/bundling-and-minifying-inline-css-and-js.aspx

+0

Ciao amico, questo script inline minifier è pasticciano fuori dei widget miei modelli. minimizza tutto ciò che è incluso in un tag

1

Non sarà possibile farlo senza codifica personalizzata. Il modo più semplice sarebbe probabilmente quello di creare un passo PreBuild nel file msbuild che sputa attraverso tutti i file .aspx e regex tutti i javascript. Quindi utilizzare YUI per minimizzare il contenuto e sostituire l'originale con la versione minificata.

Si potrebbe anche voler controllare MbCompression che comprime molto anche le pagine asp.net, anche se non credo che riduca anche il javascript in linea.

2

Vorrei estrarre javascript in metodi e spostarli in file .js. e chiama invece le funzioni con i relativi parametri dalle pagine. Non una procedura complicata e molto più facile da mantenere (meno codice). È inoltre possibile trarre vantaggio dalla memorizzazione nella cache del contenuto lato client.


Inoltre: non sono sicuro che sia d'aiuto, ma Google Closure sembra davvero buono.

http://code.google.com/closure/

opzioni di compressione: http://code.google.com/closure/compiler/docs/api-tutorial3.html

Disponibile come servizio eseguibile o Web Java.

0

E 'possibile raggruppare e Minimizza JavaScript inline. Con aiutanti Razor su modelli è possibile creare un metodo di estensione come quella qui sotto:

public static MvcHtmlString AddScriptSource(this HtmlHelper helper, Func<dynamic, HelperResult> source, string key) 
{ 
    string scriptSource = source(null).ToHtmlString(); 

    // Cache scriptSource here 

    return MvcHtmlString.Empty; 
} 

Quale si usa in questo modo:

@Html.AddScriptSource(@<text>$(document).ready(function() { $('h1').text('The current controller is @ViewContext.RouteData.Values["controller"].ToString()'); });</text>, "test") 

ho creato una fardellatrice e minifier intorno a questo un paio di settimane fa al:

https://github.com/philpeace/CodePeace.StrawberryJam

Problemi correlati