Cómo comprimir tus archivos JS (código Javascript) desde PHP con JSMin. Explicamos el funcionamiento de la librería JSMin, en su versión para PHP.

php Cuando se trata de optimizar una página web, cada Kilobyte cuenta. Como sabemos, cuanto menos pesada en bytes sea una página web, más rápido se transfiere por Internet y antes la puede visualizar el usuario. En este artículo vamos a ver una librería que nos puede ayudar a comprimir un archivo con código Javascript, para que ocupe menos espacio y se pueda transferir más rápidamente por la Red.

¿Cómo se puede comprimir un código Javascript?

El concepto que tenemos de compresión de archivos seguramente tenga relación con los conocidos .zip u otros formatos de compresión como el .rar. Pues la compresión que vamos a ver para códigos Javascript no tiene nada que ver. No os vamos a explicar que comprimáis el archivo con zip y lo publiquéis.

En realidad, en este caso, la compresión se basa en una optimización del código para que ocupe menos espacio. Como podemos saber, a la hora de programar, colocamos muchos caracteres de más en el código, que no son del todo necesarios. Esto ocurre con, por ejemplo, espacios de más, saltos de línea, tabulaciones, pero sobre todo con los comentarios al código.

JSMin lo que hace es revisar el código Javascript, analizarlo y devolver una nueva versión de ese código, al que se le ha suprimido toda la información superflua. El resultado consiste en un código Javascript que sigue ejecutándose perfectamente en el navegador, con las mismas sentencias y funcionalidades, pero que ocupa mucho menos.

¿Dónde puedo obtener JSMIN para PHP?

El script que estamos comentando, JSMin para PHP, podemos descargarlo gratuitamente desde una página de Google Code, donde está publicado para descarga:http://code.google.com/p/jsmin-php/

Además, para el que le interese, dejamos el link a la página web oficial del producto, donde se ofrecen unas explicaciones básicas sobre qué hace JSMin para comprimir el código Javascript.

http://www.crockford.com/javascript/jsmin.html

¿Cómo comprimir el código con JSMin para PHP?

JSMin tiene una función, que debemos ejecutar para comprimir un código Javascript. Dicha función recibe un parámetro, que es una cadena con el código Javascript que queremos comprimir. Devuelve una cadena con el código, después de eliminar la información innecesaria y compactar las sentencias.

Lo primero de todo sería incluir la librería con el JSMin para PHP, que hemos debido descargar desde la propia página web del producto, para obtener la versión más actualizada.

include («jsmin-1.1.1.php»);

Luego podemos utilizar la función minify de la clase JSMin, que realiza el trabajo de comprimir el código JS.

$codigo_comprimido = JSMin::minify(«//codigo javascript»);

Debemos pararnos para explicar esta línea de código, que puede sorprender por el operador :: de PHP (se ven los «::»?)

El operador :: de PHP sirve para invocar métodos de clases, lo que en algunos lenguajes se llaman métodos estáticos, con la particularidad que no hace falta tener ningún objeto instanciado de esa clase para poder ejecutar el método. Es decir, llamamos al método sin pasar por ningún objeto, simplemente con el nombre de la clase.

En ese caso, el include jsmin-1.1.1.php había definido una clase llamada JSMin. Esa clase tiene un método llamado minify(). Con JSMin::minify() estamos llamando a la función minify() declarada en la clase JSMin, sin necesidad de haber creado ningún objeto de esa clase.

Script PHP para leer código Javascript de un archivo de texto y generar otro archivo de texto con el código comprimido

Para finalizar, voy a mostrar un código PHP que he creado para comprimir un archivo Javascript, basándome en JSMin.

Este script define un nombre de archivo que se quiere comprimir y genera otro archivo en el mismo directorio que se llama igual, pero comenzando con «comprimido_». Ese archivo comprimido contiene el mismo código Javascript, una vez pasada la función minify() de JSMin.

<?
$archivo_script_js = ‘navegador.js’;

include («jsmin-1.1.1.php»);
$codigo_comprimido = JSMin::minify(file_get_contents($archivo_script_js));

$archivo = fopen(«comprimido_» . $archivo_script_js, «w+»);
fwrite($archivo, $codigo_comprimido);
fclose($archivo);
?>

Como se puede ver, se define arriba del todo el nombre del archivo que tiene el código PHP a comprimir.

Luego se realiza la compresión y se escribe los resultados en un archivo nuevo. El archivo antiguo se llama en este script «navegador.js» y el fichero nuevo con el script comprimido, que se creará en el mismo directorio, se llama «comprimido_navegador.js».

Conclusión sobre comprimir los códigos JS

Ten en cuenta que la compresión no es un proceso reversible. Guarda siempre una copia de seguridad de los archivos con el código original, que la necesitarás si deseas editar el código.

Eso es todo. Espero que sea de utilidad esta clase para comprimir archivos Javascript desde PHP.

Vía: DesarrolloWeb.com