我在 java 中使用 velocity 生成 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;
}
}
最佳答案
闭包编译器
您可以使用 Google 的Closure Compiler。
它格式化、压缩、优化 JavaScript 代码并查找错误。
要快速了解它的功能,您可以 try the web service .
例子
对于您的示例字符串,
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" return
importClass(java.util.ArrayList);
function fun() {
return!0
}
;
如您所见,两个 fun()
函数的结果是相同的 (Boolean true
)。
然而,第二个删除了所有无用的代码(通过保持有效性!)并且将执行得更快。
下载与引用
现在,实际的编译器是用 Java 编写的,可以作为 command-line utility to download 使用。 (更新 2014-07-10:New Downloadlink)。
作为第二个选项,您可以实现自己的包装类以与 REST API ( as I did for PHP) 通信。不需要太多的努力/代码。
更多信息可在此处获得:
Google Code Project Page
Getting Started
FAQ: How do I call Closure Compiler from the Java API?
REST API Reference
希望对您有所帮助。
关于java - 使用 Java API 格式化 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15471189/