JavaScript压缩库使用哪些技术来最小化文件大小?

时间:2009-04-08 13:24:25

标签: javascript optimization theory

请注意,这个问题的目的是为了更多关于主题的理论方面,但除了剥离空白之外还有其他技术用于JavaScript Compression

4 个答案:

答案 0 :(得分:1)

脱离我的头顶......

  • 对本地变量进行标记,然后将它们重命名为最小尺寸的变量。
  • 删除了大量的空白。
  • 删除不必要的大括号(例如,在if语句删除大括号并添加单个分号后单行执行)。
  • 删除不必要的分号(例如,在结束括号之前'}'。

我最常用的缩放器是YUI Compressoras they state,它是开源的,因此您可以自己查看它们的用途。 (我不确定“微优化”是什么意思,可能是一堆罕见的案例,可以让你获得一两个角色。)

答案 1 :(得分:1)

大多数压缩机使用不同技术的组合:

  • 剥离空白
  • 通过压缩algorythm压缩文件(gzip,deflate)
  • 大部分空间都保存了重命名的interall变量和函数更短的名称,例如:

此功能:

function func (variable) {
  var temp = 2 * variable;
  return temp;
}

将成为:

function func (a) {
  var b = 2 * a;
  return b;
}
  • Dean Edwards packer使用了一些内部压缩。该脚本在页面上加载时解压缩。
  • 使程序代码更短的所有常用内容:
    • 删除未使用的代码
    • 功能内联

答案 2 :(得分:0)

我可以列举一些在Google Web Toolkit编译器中找到的内容:

  • 内联方法调用
  • 消除死码
  • 变量重命名/源混淆
    • 这意味着将长变量重写为短变量等等

几乎所有这些都需要Javascript解析(即它们的工作超出了纯粹的词法分析)。

答案 3 :(得分:0)

代码重命名和重新排序,以便gzip压缩器具有更好的结果。

例如

(不那么聪明)

原始代码:

function mul(mul1, mul2)
{
 return mul1 * mul2;
}

function print(str)
{
  // do something 
}

function add(add1, add2)
{
 return add1 + add2;
}

修改代码:

function mul(a,b)
{
 return a * b;
}

function add(a, b)
{
 return a + b;
}

function print(str)
{
  // do something 
}