java - 使用 Java API 格式化 JavaScript

标签 java javascript velocity

我在 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/

相关文章:

java - 使用 jdbi 迭代 ResultIterable 对象

javascript - MooTools - 如何在提交表单时获取鼠标位置?

javascript - 无法得到我在 nodejs/mongoose/bluebird 中返回的 promise

amazon-web-services - 如何在 AWS Api Gateway 映射模板(Velocity、VTL)中创建当前的 ISO8601 时间戳?

spring - Velocity IncludeEventHandler 困境

javascript - 速度中的 xml 字符串操作

java - 私有(private)变量初始化

java - 存储在 SD 卡中的安全视频内容,其他应用程序无法访问它

java - Java NIO 中 FileChannel.read()/write() 的命名不明确且令人困惑

javascript - 如何从 HtmlUnit 中的特定 url 过滤 javascript