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

Closure Compiler with Advanced Optimizations and Externs

我已经下载了最新的闭包编译器 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 字节文件出现。显然,我在某处误解了一些东西。如果有人能帮助我走上正轨,我将不胜感激。

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

hello("foo");

所以事情真的发生了。您可以使用 online closure compiler 进行尝试。默认代码是:

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

如果注释掉最后一行,点击"advanced"按钮编译,结果是成功的,但是是零字节。这是因为该代码实际上什么都不做,所以编译器在做正确的事情。