代码压缩minify
抽象语法树:AST(Abstract Syntax Tree)
通过 AST 分析,根据选项配置一些策略,来生成一颗更小体积的 AST 并生成代码。
常见用以压缩 AST 的几种方案如下:
去除多余字符: 空格,换行及注释
1 | // before |
多行代码压缩到一行时要注意行尾分号。
压缩变量名:变量名,函数名及属性名
1 | // before |
在这个示例中,当完成代码压缩 (compress
) 时,代码的混淆 (mangle
) 也捎带完成。 但此时缩短变量的命名也需要 AST 支持,不至于在作用域中造成命名冲突。
解析程序逻辑:合并声明以及布尔值简化
合并声明:
1 | // before |
布尔值简化:
1 | // before |
解析程序逻辑: 编译预计算
在编译期进行计算,减少运行时的计算量:
1 | // before |
以及一个更复杂的例子:
1 | // before |