7
votes

JavaScript Corder Compression

J'essaie d'entrer un concours JavaScript dans lequel le script doit être <= 1kb de taille. Minification et évaluation est autorisée, donc je l'exécutions via le compilateur de fermeture de Google (qui fait un peu mieux que tout autre que j'ai essayé).

Mais j'ai trouvé que si je convertitais le script en une chaîne et remplacez les mots longs tels que «fonction» et «retour» avec des caractères simples, je peux réduire encore plus loin. Ensuite, en intégrant la chaîne de mon script, effectuez la substitution pour la restaurer, puis «évaluer» cela, je peux obtenir le comportement d'origine.

Alors je me demandais si je pouvais généraliser cette dernière méthode. Quelqu'un a-t-il vu ou écrit du code pour comprimer / décompresser les chaînes de cette manière? Envie d'y penser?

edit Pour vous faire clairement, je vous demande de comprimer et de décompresser les chaînes dans JavaScript - non plus miniquante. Par exemple. Comment trouver les modèles les plus courants d'une chaîne et comment écrire un minuscule décompresseur en JavaScript pour les chaînes où ces occurrences ont été remplacées par des caractères simples.

Merci.


5 commentaires

Erm ... peut-être de Dean Edward's / Packer /?


compressorrater.thruhere.net - un outil utile pour comparer la sortie de différents minificateurs ou méthodes de compression


Aucun des minificateurs n'a essayé de travailler aussi bien que Google (y compris Packer), que j'utilise déjà. La question concerne la compression / la décompression des chaînes - il arrive que ma chaîne soit minifiée JS.


Peut-être que vous avez déjà lu celles-ci, mais voici deux articles récents d'une liste à part sur la manière de rédiger un code que les minificateurs peuvent compresser plus facilement: alistatapart.com/articles/better-javascript-Minification alistacart.com/articles/javascript-minification-par-ii


@Jenni - Cheers, je vais lire ça. En fait, j'ai eu mon script à une taille acceptable. Mais je suis toujours intéressé par cette idée de compression / décompression à l'intérieur du script.


3 Réponses :


0
votes

TOKENISATION est la méthode préférée de compression des scripts car il fonctionne avec les mots-clés individuels et autres noms.


1 commentaires

La plupart de ceci se fait par le compilateur de fermeture - il y a très peu de mots-clés JavaScript que j'utilise (fonction, retour, etc.), mais le compilateur de fermeture rend automatiquement tous les noms de fonction seulement 1 lettre de long, etc.



2
votes

Avez-vous envisagé de raccourcir votre code en créant un raccourci pour ces objets et méthodes JavaScript que vous utilisez beaucoup dans votre code: xxx pré>

puis au lieu d'écrire p>

id("foo");


1 commentaires

Oui, fait déjà cela ... mais aussi, le compilateur de fermeture le fait aussi partie de son optimisation.



3
votes

Est-ce que vous recherchez http://www.itéal.com/jscrush/? J'ai trouvé utile pour la même compétition (je suppose que c'est JS1K).


2 commentaires

Non. C'est un autre miniérateur. Je cherche à compresser et à décompresser des cordes.


Excuses. C'est exactement le genre de chose dont je parlais.