如何编写压缩友好的JavaScript?

如何编写压缩友好的JavaScript?,javascript,gzip,minify,Javascript,Gzip,Minify,我想最小化我必须通过网络发送给个人网站的Javascript代码的大小。有什么技巧可以编写压缩效果更好的代码吗?我在考虑min-ification和gzip 我需要使用短变量名吗?或者我们可以找到所有这些实例并缩短它们吗?还是因为gzip会检测到它们并通过导线进行压缩?对于函数,传入具有属性的对象是否更好?或者只为每个需要的值设置单独的参数?(我可以想象,参数缩短是安全的,因为它们总是函数的局部参数) 我对这些工具的功能有一个粗略的了解,但我对如何编写尽可能小的Javascript压缩没有足够的

我想最小化我必须通过网络发送给个人网站的Javascript代码的大小。有什么技巧可以编写压缩效果更好的代码吗?我在考虑min-ification和gzip

我需要使用短变量名吗?或者我们可以找到所有这些实例并缩短它们吗?还是因为gzip会检测到它们并通过导线进行压缩?对于函数,传入具有属性的对象是否更好?或者只为每个需要的值设置单独的参数?(我可以想象,参数缩短是安全的,因为它们总是函数的局部参数)


我对这些工具的功能有一个粗略的了解,但我对如何编写尽可能小的Javascript压缩没有足够的信心。

您应该同时使用缩小和压缩,有关一些结果,请参阅。 您还应该考虑使用客户端缓存,因为这将完全消除线程开销对缓存命中的影响。
另外,请确保您的响应中没有发送任何冗余的http头。

如果您使用的是缩小工具,您不需要为变量使用短名称,缩小器会处理这些问题

至于函数参数,从缩小的角度来看,最好使用单个参数而不是对象属性,因为缩小器不能重命名对象属性,但会重命名参数

我觉得没有资格从
Gzip
的角度来建议您如何编写更多可压缩代码,但我可以给您一些关于编写更多可压缩Javascript代码的建议

我的第一个建议是,在代码上运行您最喜欢的迷你程序,然后将它的漂亮打印版本与原始代码进行比较。通过这种方式,您将了解迷你们对代码所做的更改

通常情况下,缩小器会将变量和函数名重命名为较短的变量,但不能重命名对象属性

因此,避免这种情况:

foo.bar.baz.A = 1;
foo.bar.baz.B = 2;
foo.bar.baz.C = 3;
$div.css('background', 'blue');  // set BG
$div.height(100);                // set height
$div.fadeIn(200);                // show element
相反,要这样做:

var shortcut = foo.bar.baz;
shortcut.d = 1;
shortcut.e = 2;
shortcut.f = 3;
迷你程序会将
快捷方式
重命名为一个或两个字母的变量

另一个好的实践是尽可能多地使用(特别是在使用JQuery时)

例如,避免以下情况:

foo.bar.baz.A = 1;
foo.bar.baz.B = 2;
foo.bar.baz.C = 3;
$div.css('background', 'blue');  // set BG
$div.height(100);                // set height
$div.fadeIn(200);                // show element
而是这样做:

$('#my-div')
  .css('background', 'blue')
  .height(100)
  .fadeIn(200);

我认为minify应该做你想做的事情,因为如果你看jquery的未统一代码,你会发现它比它的精简版本大得多。对于大多数当前的算法,你应该尽量减少代码中的指令数量,可变的名称长度当然不重要。正如A.Lau所建议的,用于jQuery的迷你程序可能是最好的选择。大多数算法都是开源的,所以你可以看看它们到底做了什么,并从中得出结论。