具有高级优化和 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"按钮编译,结果是成功的,但是是零字节。这是因为该代码实际上什么都不做,所以编译器在做正确的事情。
我已经下载了最新的闭包编译器 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"按钮编译,结果是成功的,但是是零字节。这是因为该代码实际上什么都不做,所以编译器在做正确的事情。