Closure Tools — Google Developersで公開されているClojure Compilerを使うと、JavaScriptから余計な空白やコメントを簡単に取り除くことができます。
サイトからcompiler-latest.zipをダウンロードして展開するとcompiler.jarが手に入るので、それを下記のようにして実行します。sample7.jsをコンパイルしてsample7-compiled.jsを生成しています。
$ java -jar compiler.jar --js sample7.js --js_output_file sample7-compiled.js
ここで、sample7.jsは次の内容です。
// サンプル var INTERVAL=1000; var COUNT_MAX=30; // HTML要素 var target1 = document.getElementById("target1"); var target2 = document.getElementById("target2"); var target3 = document.getElementById("target3"); var current_width2 = 0; var current_width3 = 0; var target2_timer_id = 0; var target3_timer_id = 0; /** * ログ用関数 */ function log(message) { document.getElementById('log').innerHTML = message; } /** * runner停止判定用変数 */ var cnt=0; /** * setIntervalで定期的に呼ばれる処理 */ function runner(time_value) { if (cnt > COUNT_MAX) { clearInterval(id); return; } if (cnt == 5) { var target2_timer_id = setInterval(function() { current_width2 += 20; target2.style.width = current_width2 + 'px'; if (current_width2 > 400) { clearInterval(target2_timer_id); } }, INTERVAL/2); } if (cnt == 10) { var target3_timer_id = setInterval(function() { current_width3 += 20; target3.style.width = current_width3 + 'px'; if (current_width3 > 800) { clearInterval(target3_timer_id); } }, INTERVAL/10); } var v = cnt + ':' + time_value; target1.innerHTML = v; cnt++; } /** * メイン処理の実行 */ var id = setInterval(function() { var time_value = (new Date()).getTime(); runner(time_value); }, INTERVAL);
これが、sample7-compiled.jsのようになります。ものすごく圧縮されていることがわかります。
var INTERVAL=1E3,COUNT_MAX=30,target1=document.getElementById("target1"),target2=document.getElementById("target2"),target3=document.getElementById("target3"),current_width2=0,current_width3=0,target2_timer_id=0,target3_timer_id=0;function log(a){document.getElementById("log").innerHTML=a}var cnt=0; function runner(a){if(cnt>COUNT_MAX)clearInterval(id);else{if(5==cnt)var b=setInterval(function(){current_width2+=20;target2.style.width=current_width2+"px";400<current_width2&&clearInterval(b)},INTERVAL/2);if(10==cnt)var c=setInterval(function(){current_width3+=20;target3.style.width=current_width3+"px";800<current_width3&&clearInterval(c)},INTERVAL/10);target1.innerHTML=cnt+":"+a;cnt++}}var id=setInterval(function(){var a=(new Date).getTime();runner(a)},INTERVAL);
「Closure Compiler Service」へアクセスすれば、Webブラウザからも使えます。
JavaScriptについては、下記の書籍の参考になるでしょう。
プログラミング言語一般については、下記が参考になるでしょう。
- クラスベースのオブジェクト指向プログラミング言語の基礎を学ぶには … 改訂版 基礎Java(CD-ROM付) (IMPRESS KISO SERIES)
- クラスベースのオブジェクト指向プログラミング言語を学ぶには … プログラミング言語Java (The Java Series)
- 関数型プログラミング言語を学ぶには … Scalaスケーラブルプログラミング第2版
- プログラミング言語の理論を学には … プログラミング言語の基礎概念 (ライブラリ情報学コア・テキスト)