- 2008年9月10日 10:42
- Javascript AJAX CSS | Javascript Compressor
改良版のJavascript Compressor のソースコードです。
http://www.samurai-logic.com/mt/2008/09/javascript-compressor-modified.html
|
ガジェットの貼り付けコード IE でガジェットが表示されないバグがありましたのでcontent type を html→url にしました。 javascript compressorのソースコードは記事の最後に紹介しています。 |
使い方: 上に、data1, data2, data3, output の4つタブがあります。data1からdata3のテキストエリアにJavaScriptのソースコードをコピー&ペーストします。 (1) Strip Tag はHTMLのタグを削除します。 (2) Escape HTMLは> < & " ' を> < & " 'に変換します。 (3) Unescape HTMLは> < & " ' を > < & " ' に変換します。 (4) Strip Commentsはスクリプトのコメントを削除します。コメントとソースコードが重なっていないかなどのチェックに使えます。 (5) Compress Javascriptはスクリプトを圧縮します。 実行ボタン(Execute)を押せば、結果がoutput タブのテキストエリアに表示されます。 圧縮するコードのサイズが大きければ、Google Chrome または Safari を使ってください。 |
| テストした Javascript ファイル | YUI menu.js(217KB=>73KB) YUI animation.js(48KB->14KB) YUI container_core.js(137KB->44KB) | 圧縮ファイルを使ったページ |
|---|
Javascript Compressor 使用上の注意:
コードの行終わりには必ず「;」が書かれていることを確認してください。
例:
function code(){
var count = 0
var temp = 10
return count+temp
}
上のコードの終わりに count=0; と";"がありませんが圧縮前は正常に動きます。
しかし圧縮後は
function code(){var count=0 var temp=10 return count+temp}
となりエラーになります。
このプログラムはJavascript でdata タブのテキストエリアに貼り付けられたスクリプトを圧縮するので、Javascript の処理速度が生命線になります。ある程度大きなコードの圧縮もガジェットレベルで簡単に出来るようになるようなものを想定してます。コードも効率的でスピードを最も重視して書いています。
Pentium 3GHz (CPU)以上で、メモリに余裕があれば、かなり大きなサイズのJavascript ファイルもGoogle Chromeの高速Javascript engine 搭載のブラウザで実行すれば1秒程で圧縮されます(個人所有のPC1台でしか使ってませんので、誤差があるかと思います)。 Javascriptの処理速度の遅いブラウザでの大きなサイズのファイル圧縮は時間がかかります。
Google Gadget : Javascript compressor のfunction のソースコードです。
括弧をカウントして書き忘れがないか簡単なエラーチェック機能を装備してます。コメントを削除のみもできますのでコメントの囲い( /* ~~~ */ ) がコードに重なっていないかのチェックも出来ます。
圧縮されるコードを最初の文字からチェックしながら1周で終わりますので高速です。もう少し、簡略化できそうですが、とりあえず紹介しておきます。
正規表現の部分( / pattern / )でコードがちゃんと書かれていないときや変わった書き方がしてある場合(コード内の正規表現の条件が満たされた場合)エラーになる可能性があります。
例えば、/(\d\s|\s\w|\/g\,\s\w+)/ と書く正規表現の "\,\s" の部分を/(\d\s|\s\w|\/g, \w+)/ と"\," を ","、そして "\s" を " " と書かれた場合、プログラムが正規表現と判断してしまう部分が /(\d\s|\s\w|\/g, の部分となりますのでスペースを余計な文字とみなして削除されます。それに \w+) の括弧 ")" が余計にカウントされてしまいます。 通常考えられない書き方ですが、この部分はコードの書き方に因ります。
スクリプトのString データを 変数 str に格納して$compress(str) を実行したとき圧縮され、$compress(str, false) でコメントのみを削除します。
New Source code of Javascript Compressor
http://www.samurai-logic.com/mt/2008/09/javascript-compressor-modified.html
下のコードは、バグが発生したコードです。
found bug in the portion added to the original algorithm. 13 Sep. 2008
rewrote var Reg & var Exp. (11 Sep.)
Search