Compresión Javascript
En la forma de ejecución habitual el núcleo de toba incluye los distintos archivos javascript a medida que los va requiriendo. Cada uno de estos archivos se denominan internamente como ''consumos''. Llamamos compresión javascript a la unión de todos estos consumos en su solo archivo y la eliminación de todo comentario y parrafos estéticos del código fuente. Esta compresión brinda los siguientes beneficios:
- Minimiza la cantidad de datos a transferir por red.
- Mejora el tiempo de carga de una página ya que luego de la primera página generalmente el browser cachea este archivo.
- Cuando se comprime, a este archivo se le da un nombre relativo a la versión de toba actual (por ejemplo toba_1.0.4.js) eliminando problemas de cacheo en equipos clientes cuando se cambia de versión.
Instalación
Para que la instalación actual utilice la compresión javascript es necesario ejecutar el comando
toba nucleo comprimir_js
Esto por una lado comprime el js en un archivo único y cambia
automáticamente esta entrada en el archivo
instalacion/instalacion.ini
:
js_comprimido = 1
Tener en cuenta que ante la actualización a una nueva versión de toba es necesario ejecutar nuevamente este comando.
Desarrollo
La compresión javascript es posible gracias a que se confía que los
fuentes respetan ciertas convenciones mínimas. Para garantizar esto se
utiliza una herramienta llamada javascript lint
que analiza archivo
por archivo. Toba posee un comando propio que invoca esta herramienta
por cada archivo a comprimir:
toba nucleo validar_js -b /fecha.js/ #Se excluye fecha.js porque es una libreria de 3eros que tira muchos errores pero funciona bien
El comando para cuando encuentra el primer error, al ser bastante lento es una buena idea usar el comando -a una vez que se detecta error en un archivo puntual para chequear solo este archivo.
Lint
La herrmamienta lint necesita un motor de js de escritorio. Utilizamos rhino, en linux
apt-get install rhino
En windows bajar la ultima versión y crear un comando rhino que apunte a
java -jar js.jar