6

Javaでvelocityを使用してJavaScriptコードを生成しています。

例:JavaScriptを生成し、以下の文字列を取得しました:

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

この文字列を受け取り、このJavaScriptを以下の方法でフォーマットするJava APIはありますか?

importClass(java.util.ArrayList);

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

1 に答える 1

2

クロージャーコンパイラ

GoogleのClosureCompilerを使用できます。
JavaScriptコードのフォーマット、圧縮、最適化、および間違いの検索を行います。

何ができるかを簡単に確認するには、Webサービスを試してください


あなたの例の文字列については、

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

フォーマットするだけの場合は、コンパイルオプションの「空白のみ」「きれいな印刷」を使用してください。

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

とにかく、Closureコンパイラでは、入力コード(文字列またはファイルURIとして指定)を最適化および/またはフォーマットし、最適化/フォーマットされたJSを文字列として返すかファイルに保存するためのいくつかのオプションがあります。

「シンプル」最適化モードの使用をお勧めします。より長いJavascriptの場合、不要なバイトを大幅に節約できます。さらに、スクリプトの実行が高速化されます。

文字列の例では、コンパイルオプション「Simple」「Whitespaceonly」ではなく)と「Prettyprint が返されます

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

ご覧のとおり、両方のfun()関数の結果は同じです(ブール値true)。
ただし、2番目のコードは(有効性を維持することで)すべての役に立たないコードを削除し、より高速に実行されます。


ダウンロード&リファレンス

現在、実際のコンパイラはJavaで記述されており、コマンドラインユーティリティとしてダウンロードできます(更新2014-07-10:新しいダウンロードリンク)。

2番目のオプションとして、REST APIと通信するための独自のラッパークラスを実装できます(PHPの場合と同様)。あまり労力/コードを必要としません。

詳細については、こちらをご覧ください:
Google Code Projectページ
はじめ
にFAQ:JavaAPIからClosureCompilerを呼び出すにはどうすればよいですか?
RESTAPIリファレンス

お役に立てば幸いです。

于 2013-03-22T21:18:51.170 に答える