JavaScript字符串压缩

7
我正在尝试参加一个javascript比赛,其中脚本的大小必须是<=1kb。允许使用Minifying和eval,因此我已经通过谷歌的closure编译器运行了它(它比我尝试过的其他编译器效果略好)。
但我发现,如果将脚本转换为字符串,并用单个字符替换像“function”和“return”这样的长单词,我甚至可以进一步减少脚本大小。然后,通过将字符串嵌入我的脚本中,执行替换以恢复它,然后进行“eval”,我就可以获得原始行为。
所以我想知道是否可以概括这种方法。有人看到或编写过这种压缩/解压缩字符串的代码吗?想想它吗?
编辑:为了使自己清楚,我询问的是在javascript中压缩和解压缩字符串 - 而不是minifying。例如如何找到字符串中最常见的模式,以及如何为这些出现替换为单个字符的字符串编写一个微小的解压缩程序。
谢谢。

1
嗯...也许是Dean Edward的/packer/? - Yi Jiang
1
http://compressorrater.thruhere.net/ - 一个有用的工具,可以比较不同压缩器或压缩方法的输出。 - Cristian Sanchez
我尝试过的所有缩小工具(包括Packer)都不如谷歌的效果好,而我已经在使用它了。问题是关于压缩/解压字符串 - 只是碰巧我的字符串是缩小后的JS代码。 - sje397
2
也许你已经阅读过以下内容,但这里有两篇最近的A List Apart文章,介绍如何编写更容易被压缩工具压缩的代码:http://www.alistapart.com/articles/better-javascript-minification/ http://www.alistapart.com/articles/javascript-minification-part-II/ - Jenni
@Jenni - 谢谢,我会看一下的。实际上我已经把我的脚本压缩到了一个可以接受的大小。但是我仍然对在脚本内部进行压缩/解压缩的想法很感兴趣。 - sje397
3个回答

3

不对。那是另一个压缩工具。我想要的是压缩和解压字符串。 - sje397
抱歉,那正是我所说的事情类型。 - sje397

2

你是否考虑过通过创建快捷方式来缩短代码,以便在代码中经常使用的JavaScript对象和方法:

var d = document; var id = d.getElementById;

然后,不要写成

document.getElementById("foo")

你可以写

id("foo");

3
好的,已经做过了...但是,闭包编译器也会将其作为优化的一部分来完成。 - sje397

0

Tokenisation是压缩脚本的首选方法,因为它可以处理单个关键字和其他名称。


1
大部分是由闭包编译器完成的 - 我使用的Javascript关键字非常少(如:function,return等),但是闭包编译器自动将所有函数名缩短为1个字母等。 - sje397

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接