6

我正在使用 java 中的速度生成 JavaScript 代码。

例如:我生成了 JavaScript 并得到了以下字符串:

importClass(java.util.ArrayList); function fun(arg) { if (true){ return true;} else{    return true;}}

是否有任何 Java API 采用此字符串并以下列方式格式化此 JavaScript:

importClass(java.util.ArrayList);

function fun(arg) { 
   if (true){ 
       return true;
   }
   else{
    return true;
   } 
}
4

1 回答 1

2

闭包编译器

您可以使用 Google 的Closure Compiler
它格式化、压缩、优化和查找 JavaScript 代码中的错误。

要快速了解它的功能,您可以尝试使用 Web 服务


例子

对于您的示例字符串,

importClass(java.util.ArrayList); function fun(arg) { if (true){ return true;} else{    return true;}}

如果您只想格式化它,请使用编译选项"Whitespace only""Pretty print",它们会返回:

importClass(java.util.ArrayList);
function fun(arg) {
  if(true) {
    return true
  }else {
    return true
  }
}
;

无论如何,使用 Closure 编译器,您有几个选项可以优化和/或格式化您的输入代码(以字符串或文件 URI 的形式给出),并将优化/格式化的 JS 作为字符串返回或将其保存到文件中。

我真的可以推荐使用“简单”优化模式。对于更长的 Javascript,它确实为您节省了大量不需要的字节。另外,它加快了脚本的执行速度!

对于您的示例字符串,编译选项"Simple"(而不是"Whitespace only")和"Pretty print"返回

importClass(java.util.ArrayList);
function fun() {
  return!0
}
;

如您所见,两个fun()函数的结果是相同的(布尔值true)。
然而,第二个已经删除了所有无用的代码(通过保持有效性!)并且将执行得更快。


下载和参考

现在,实际的编译器是用 Java 编写的,可以作为命令行实用程序下载(2014-07-10 更新:新的下载链接)。

作为第二种选择,您可以实现自己的包装类来与 REST API 通信(就像我为 PHP 所做的那样)。不需要太多的努力/代码。

更多信息可在此处获得:
Google 代码项目页面
入门
常见问题解答:如何从 Java API 调用闭包编译器?
REST API 参考

希望有帮助。

于 2013-03-22T21:18:51.170 回答