理解Closure Compiler强加的约束
Closure Compiler期望输入的JavaScript符合一定的约束条件。压缩级别越高,约束条件越多。
本文分别介绍每种级别的条件约束。
适用于所有级别的约束
下面两条约束条件适用于Closure Compiler(以下简称“编译器”)的所有级别压缩:
- 编译器只能识别Ecmascript 262第三版
Ecmascript第三版是Javascript 1.5 和 JScript 5.5的基础,当人们提到“JavaScript”时,通常指的是这个版本的JavaScript。编译器不支持任何版本的JScript或者高于1.5版本的JavaScript。符合Ecmascript语言规范的浏览器特有特性能够很好的在编译器中工作,例如用合法JavaScript语法创建的ActiveX对象;不符合Ecmascript语言规范的浏览器特有特性会导致编译器错误,例如,Firefox的JavaScript引擎支持const关键字,但JavaScript规范中没有包含这个关键字,所以编译器不支持它。本约束能让编译器检查代码是否兼容所有浏览器。
- 编译器不保留注释
选择编译器的任何级别压缩都会删除代码中的注释,所以那些依赖特定注释的代码不能用编译器来压缩。举个例子,因为编译器不会保留代码注释,所以代码中不能直接使用JScript的条件化注释,然而,你可以使用eval()将代码中的条件化注释包起来,编译器可以正确的压缩下面的代码:
JAVASCRIPT:-
x = eval("/*@cc_on 2+@*/ 0");
提示:你可以使用@preserve annotation参数在压缩后的代码顶部包含如开源代码授权或者其它重要的文字。
-
评论(0)
