J’avais rien d’autre à faire
March 27, 2011
En ce moment à l’école, on a 2 grands thèmes en parallèle : du signal et de l’informatique. Ça inclu d’enchaîner un cours sur la théorie de l’information avec un cours de javascript. Et comme l’un comme l’autre sont rigolos, j’me suis dit que je pouvais mixer les deux, tant qu’à y être.
Donc, vous avez tous un jour créé une archive autoextractible pour pouvoir faire rentrer tous vos gros fichiers sur une disquette et en plus pouvoir la donner à quelqu’un qui n’a pas winzip sur son PC. L’idée est donc d’appliquer le même principe, mais au Javascript. On sait bien que les fichiers statiques d’un site web sont lourds et qu’il faut utiliser diverses techniques pour leur faire prendre moins de place. Comme bien entendu il serait trop simple et performant d’utiliser la compression gzip du HTTP, je me suis dit qu’il serait assez amusant de créer un générateur de javascript autoextractible.
D’un point de vue performances, j’ai pris comme base le fichier minifié de jquery, qui fait 84kio. Une fois passé à la moulinette il ne pèse plus que 52kio. Le seul problème, c’est qu’il faut environ 200ms pour décompresser le fichier, ce qui est plus que le temps de chargement dans la majorité des cas. De toute façon, c’est un proof of concept, ça n’est pas sensé être utile
D’un point de vue réalisation, on a d’un côté un programme en python qui va prendre le fichier JS à compresser, le mouliner, et générer du code javascript qui une fois exécuté restitue le fichier JS de base. Le plus gros problème aura été un petit gag sur l’incapacité du JS à gérer les chaînes binaires. Du coup, j’ai dû faire un peu de hack… Attention aux âmes sensibles
Après, question compatibilité avec les navigateurs, d’après mes tests ça passe très bien. En gros, c’est géré par tous les navitateurs sérieux.
J’ai créé un dépôt github pour mettre le code en ligne. Pour l’instant c’est pas très documenté, mais peut être que ça viendra. Si quelqu’un teste j’suis intéressé d’avoir des retours :-° Si j’ai pas trop la flemme je ferais un setup.py ou peut être même un paquet debian (oh le ouf).
Un petit apperçu vite fait de comment ça s’utilise :
./jsz.py -i tests/jquery-1.5.1.min.js -o out.js
Comprendra qui pourra
Sur ce, il est l’heure pour moi d’aller faire dodo…
Filed under: Divers
Leave a Comment
XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
RSS feed for comments on this post.