2009-12-13 19 views
5

Google ha il bel compressore JavaScript chiamato "chiusura"Come applicare Google Closure alla mia intera pagina web?

http://closure-compiler.appspot.com/home

Ma è un dolore da usare per JavaScript inline all'interno di un file HTML.

Domanda: esiste uno strumento online in cui ho semplicemente dare l'input "uncompress.html" e sputa fuori la versione compressa di quel HTML con tutte JavaScript inline compresso come bene?

+2

Per quali motivi avete bisogno di JavaScript inline all'interno di un file HTML? –

+2

Ho bisogno che il JS funzioni immediatamente. Quindi il modo più veloce per farlo è avere JS in linea. Inoltre, questo JS viene utilizzato solo su questa singola pagina HTML – NickH

risposta

2

I minifiers, gli offuscatori e i compressori sono stati progettati per risolvere il problema del download di elementi esterni durante il caricamento di una pagina. Non sono mai stati pensati per essere usati in JavaScript o CSS in linea, poiché molti di questi sono normalmente tenuti fuori dalla pagina in un file separato.

Dato che dovresti fare il gzipping il più possibile, per i browser che possono gestire gzip, non dovrebbe in realtà importare che il tuo css/javascript non sia minimizzato nella pagina.

+0

. Si potrebbe pensare, ma ho MOLTO JavaScript. Semplicemente eseguire Closure da solo sul mio JS sta riducendo il mio JavaScript di quasi 94 kb, anche con gzip. Il mio JavaScript si avvicina a 400 kb (gzip), quindi il taglio di 94 kb di JSpped JS è enorme – NickH

+1

se c'è un tale javascript in linea dovrebbe probabilmente essere nel suo stesso file poiché avrebbe il proprio pipe per il download e non ha bisogno di entrare nel tuo file all.js. I moderni browser hanno 8 pipe da scaricare, quindi dubito che avresti troppo blocco – AutomatedTester

+2

Mio dio 400Kb (compresso) di javascript in linea !!! – micmcg

1

Se si utilizza PHP, si potrebbe chiamare il compilatore di Google in questo modo, e quindi utilizzare l'intestazione per tornare javascript

<?php 
    $script = file_get_contents('http://www.domain.com/scripts/script.js'); 
    $ch = curl_init('http://closure-compiler.appspot.com/compile'); 

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_POST, 1); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, 'output_info=compiled_code&output_format=text&compilation_level=SIMPLE_OPTIMIZATIONS&js_code=' . urlencode($script)); 
    $output = curl_exec($ch); 
    curl_close($ch); 

    header('Content-type: application/javascript'); 
    echo $output; 

?> 

link php code

0
commento di

Mirroring AutomatedTester, davvero non dovrebbe mettere così tanto inline JavaScript nel tuo file HTML.

Ma se davvero vuole veramente fare che per qualche ragione, perché non si può:

  1. Fai un file di testo contenente la JavaScript
  2. comprimerlo con chiusura
  3. copiarlo nel tag <script></script>

so che questo non è automatico, ma si dovrebbe solo bisogno di fare t il suo quando si sta distribuendo, e non si sta distribuendo ogni ora, giusto?

non ho visto molto bisogno di ridurre al minimo HTML, in quanto gzip fa in genere un lavoro abbastanza buono ...

Problemi correlati