我已经下载了最新的闭包编译器 jar 文件并按照说明进行操作 here看看如何让它保留对其他地方定义的 JS 函数的引用。
我的测试脚本hello.js如下
function hello(nom)
{
alert(nom + familyName());
}
我的 extern 在包含代码的文件 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');
如果注释掉最后一行并单击“高级”按钮并编译,结果是成功的,但它是零字节。这是因为该代码实际上不执行任何操作,因此编译器正在做正确的事情。
关于javascript - 具有高级优化和外部的闭包编译器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44462074/