Comprime tu código

A pesar de que el ancho de banda disponible para usuarios finales crece sin medida (sobre todo fuera de esta esquinita suroccidental de la Península Europea), sigue siendo un buen consejo optimizar en lo posible el código Javascript de una página web. Es razonable porque los scripts son componentes de la página que contribuyen a la interactividad, prestan servicios variopintos y, con un poco de suerte, funcionan; pero son invisibles. Los usuarios no perciben la necesidad de unos segundos adicionales de descarga, si hay suerte y no tenemos la wifi pillada por algún vecino (o vecina), a cambio de un efecto especial en los botones o de una ensalada de menús dinámicos.

Por eso sigue siendo interesante comprimir el código. La herramienta que he usado para mis últimas creaciones es /packer/ con la opción de codificación Base62. Antes de usar esta herramienta, parece recomendable pasar los scripts candidatos a revoltillos alfanuméricos por un “limpiador” como JSLint.

¿Por qué este paso adicional? Sencillo. Javascript, pese a que su nombre lo liga a un lenguaje serio y formal (algunos dirían sadomaso o bondage) como es Java, es en realidad una de esas creaciones calenturientas y flexibles que, sin llegar al límite de Perl, lenguaje en el que un mono pisoteando un teclado puede escribir un programa ejecutable, permite gran cantidad de licencias de sintaxis. Licencias que, ante cualquier manipulación automática del código (como por ejemplo, la compresión), se vuelven contra el despistado programador y se lo comen. Con patatas.

JSLint sirve para detectar, con diferentes grados de rigurosidad (alto, altísimo e ionosférico), los potenciales problemas que un programa en Javascript puede desarrollar por mor de su sintaxis. Un caso claro: los puntos y coma, o falta de ellos, al final de cada sentencia. Es recomendable escribir cualquier programa candidato a la compresión de forma ordenada, con puntos y coma en los sitios correctos, llaves en los bloques, uso adecuado del cualificador var, uso moderado de eval()… Y así sucesivamente. La documentación de JSLint ofrece más pistas, pero las que he citado serán suficientes para mantener al 99,9% de los scripts libres de problemas.

Por si las moscas, ¡no borres la versión descomprimida! Aunque las moscas no son el único motivo: también están la depuración sana, y no menos importante, la contribución a la comunidad. La seguridad por la obscuridad no es manera de proteger código: cualquiera que desee robar esos algoritmos patentados en Javascript podrá hacerlo con un mínimo de esfuerzo, por mucho que ofusquemos el código. Acepta un consejo: si de veras necesitas el velo del secreto, no programes en Javascript, punto. Internet no funciona así.