2009-12-13 19 views
5

Google tiene la muy agradable compresor de JavaScript llamada "cierre"¿Cómo aplicar Google Closure a toda mi página web?

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

Pero es un dolor que se utilizará para JavaScript en línea dentro de un archivo HTML.

Pregunta: ¿Existe una herramienta en línea donde simplemente doy la entrada "uncompress.html" y escupe la versión comprimida de ese HTML con todo el JavaScript en línea comprimido también?

+2

¿Por qué razones qué necesita JavaScript en línea dentro de un archivo HTML? –

+2

Necesito que el JS se ejecute inmediatamente. Entonces, la forma de hacer esto en ayunas es tener JS en línea. Además, este JS solo se usa en esta única página HTML – NickH

Respuesta

2

Los minificadores, ofuscadores y compresores se han diseñado para resolver el problema de la descarga de elementos externos al cargar una página. Nunca se utilizaron para JavaScript o CSS en línea, ya que muchas de ellas normalmente se guardan fuera de la página en un archivo separado.

Dado que deberías usar gzip tanto como puedas, para los navegadores que pueden manejar gzip, no debería importar en realidad que tus css/javascript en línea no se hayan minimizado en la página.

+0

Lo pensaría, pero tengo MUCHO JavaScript. Simplemente ejecutar Closure solo en mi JS reduce mi JavaScript en casi 94 kb, incluso con gzip. Mi JavaScript se acerca a 400 kb (gzip), por lo que cortar 94 kb de gzip JS es masivo – NickH

+1

si hay tanto javascript en línea probablemente debería estar en su propio archivo ya que tendría su propio conducto para descargar y no necesita entrar en su archivo all.js Los navegadores modernos tienen 8 tubos para descargar, así que dudo que tengas demasiado bloqueo – AutomatedTester

+2

Mi dios 400Kb (comprimido) de Javascript en línea !!! – micmcg

1

Si utiliza PHP, es posible llamar al compilador de Google de esta manera, y luego usar la cabecera de volver 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
comentario de

Mirroring AutomatedTester, que realmente no debería poner tanto JavaScript en línea en su archivo HTML.

Pero si realmente quieres hacer eso, por alguna razón, ¿por qué no puede usted:

  1. hacer un archivo de texto que contiene la JavaScript
  2. comprimirlo con Cierre
  3. copiarlo en su etiqueta <script></script>

sé que esto no es automático, sino que sólo tendrá que hacer t el suyo cuando se está desplegando, y no se está desplegando cada hora, ¿verdad?

no he visto mucha necesidad de minimizar HTML, ya que gzip normalmente hace un buen trabajo suficiente ...

Cuestiones relacionadas