具有高级优化和Externs的Closure编译器

时间:2017-06-09 15:54:34

标签: javascript compiler-optimization google-closure-compiler

我已经下载了最新的闭包编译器jar文件,并按照here的说明查看如何保存对其他地方定义的JS函数的引用。

我的测试脚本 hello.js 如下

function hello(nom)
{
 alert(nom + familyName());
}

我的externs在文件 externs.js 中定义,其中包含代码

function familyName(){}
然后我发出命令

java -jar closure.jar --js hello.js --externs externs.js --js_output_file hello-compiled.js  --compilation_level ADVANCED_OPTIMIZATIONS

没有ADVANED_OPTIMIZATIONS一切正常 - 实际上是代码缩小的一个地方。但是,只要我输入高级标志,输出hello_compiled.js就会以空的1字节文件形式出现。显然,我在某处误解了某些东西。我非常感谢能够让我走上正确轨道的人。

1 个答案:

答案 0 :(得分:1)

我怀疑你的hello.js只定义了hello函数?如果是这样,您需要添加:

hello("foo");

以便实际发生一些事情。您可以使用online closure compiler进行尝试。默认代码是:

function hello(name) {
  alert('Hello, ' + name);
}
hello('New user');

如果注释掉最后一行并单击“高级”按钮并编译,则结果成功,但它是零字节。这是因为该代码实际上没有做任何事情,因此编译器正在做正确的事情。