javascript - 具有高级优化和外部的闭包编译器

标签 javascript compiler-optimization google-closure-compiler

我已经下载了最新的闭包编译器 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/

相关文章:

javascript - 如何将 PivotItems 动态绑定(bind)到 html 页面

php - 从像素数组创建图像服务器端

c++ - noexcept 说明符和编译器优化

javascript - 使用闭包编译器时如何拥有一组带有静态方法的类?

javascript - webpack-dev-server 不会自动重新加载和构建 - 配置问题

Javascript - 使用私有(private)变量定义没有函数的对象

arrays - 在 Swift 中对 Array 调用 .count 时分配计数变量

c++ - 如何避免编译器优化某些操作?

javascript - 为什么一些浏览器原生的全局对象写成 window.object 而其他的只写成 object?

javascript - 防止闭包重命名对象键