是否有任何JS压缩器允许您使用JScript conditional compilation执行#ifdef
预处理类型的操作?
如果@set
定义一个“变量”,JS压缩器不能删除条件编译逻辑在未编译时定义的代码吗?
我对JScript语法有点不确定,但可能就像这样
/*@cc_on
@set (@version = 1)
@if (@version == 1)
alert('Version 1');
@else
alert('Not version 1');
@end
@*/
可压缩成
alert('Version 1');
答案 0 :(得分:0)
Closure编译器可以通过@preserve注释保留注释,但是封闭编译器和其他任何基于parse-tree的压缩器都不能很好地处理CC。
这是一个难题。处理条件编译需要推理多个可能的解析树,而不仅仅是一个。
一些非常简单的压缩器只是将JS视为一系列令牌而不是操纵解析树,但在条件编译时可能会做得更好,但它们在压缩时整体上要差得多。
一个解决方案可能是编译所有源文件,除了具有条件编译指令的文件,并且只导出其他源文件使用的变量。