JavaScript压缩库使用什么技术来最小化文件大小?
请注意,这个问题更多的是关于这个主题的理论方面,但是除了去除空白,还有什么其他技术可以使用呢 我可以在Google Web Toolkit编译器中找到一些:JavaScript压缩库使用什么技术来最小化文件大小?,javascript,optimization,theory,Javascript,Optimization,Theory,请注意,这个问题更多的是关于这个主题的理论方面,但是除了去除空白,还有什么其他技术可以使用呢 我可以在Google Web Toolkit编译器中找到一些: 方法调用的内联 死码消除 变量重命名/源混淆 这意味着将长变量重写为短变量等等 几乎所有这些都需要Javascript解析(即它们的工作超出了纯粹的词法分析) 标记局部变量,然后将其重命名为最小大小的变量 删除大量空白 删除不必要的大括号(例如,if语句后的单行执行可以删除大括号并添加一个分号) 删除不必要的分号(例如,在结束大括
- 方法调用的内联
- 死码消除
- 变量重命名/源混淆
- 这意味着将长变量重写为短变量等等
几乎所有这些都需要Javascript解析(即它们的工作超出了纯粹的词法分析)
- 标记局部变量,然后将其重命名为最小大小的变量
- 删除大量空白
- 删除不必要的大括号(例如,if语句后的单行执行可以删除大括号并添加一个分号)
- 删除不必要的分号(例如,在结束大括号“}”之前)
我最常用的迷你们是,而且,它是开源的,所以你可以自己看看它们到底做什么。(我不确定他们所说的“微优化”是什么意思,可能是一堆罕见的案例,可以让你获得一两个角色。)大多数压缩器使用不同技术的组合:
- 剥离空白
- 用压缩算法压缩文件(gzip,deflate)
- 将所有内部变量和函数重命名为较短的名称可以节省大部分空间,例如:
function func (variable) {
var temp = 2 * variable;
return temp;
}
将成为:
function func (a) {
var b = 2 * a;
return b;
}
- 迪安·爱德华兹使用了一些内部压缩。当脚本加载到页面上时,将对其进行解压缩
- 使程序代码更短的所有常用内容:
- 删除未使用的代码
- 函数内联
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
}
那个死代码部分让我害怕,当JS具有全局作用域时,GWT怎么知道代码死了?或者说GWT是为一次编译所有JS而设计的,如果只在多个JS文件中的一个文件上执行它,它就不起作用了?GWT是一个整体编译器,因此,通过对java中的操作添加一些限制,它可以准确地确定是否调用了一个方法(类似于使用eclipse ide所做的操作).我投票反对这个答案,因为你没有真正回答这个问题,即使用了什么技术。对不起,罗布,我没有阅读整个问题。新的答案,希望我这次做得更好:)这只是一个示例,当然,您可以只执行不会影响结果的操作。将变成:函数f(a){return 2*a;};)从72个字符减少到27个字符如果您想在全局javascript作用域上使用func,我会保持名称不变…;-)