2012-02-27 8 views
5

ミニブートのコメントはどうなりますか?すべてのコメントが1つの行に凝縮されているときに、コメントの終わりをブラウザがどのように知ることができますか?この小さな例を見てみましょう、私はこのような、Googleのトラッキングコードを持っている:縮小されたJavaScriptのコメントはどうなりますか?

//Google tracking 
var _gaq = _gaq || []; 
_gaq.push(['_setAccount', '123456']); 

縮小さバージョンが1行にすべてを引っ張る

// Google tracking var _gaq = _gaq || []; _gaq.push(['_setAccount', '123456']); 

あり複数のステートメントがありますが、私は、エディタでJavaScriptコードを調べるとき、それは1つの巨大なコメント(多かれ少なかれ)のように見えます。コメントを終了するとき、またはこのコードが実行されていないことをブラウザに知らせる隠された文字はありますか?

+2

あなたはどのミニカーを使用していますか? minifierはできるだけ多くの文字を削除することになっています*特にコメントのようなもの。 (あなたのケースのスペースだけでなく) – pimvdb

+0

スクリプトを小さくするために何を使用していますか? – JaredPar

+2

minifierに依存しますが、私は良いminifierが完全にコメントを除外すると思います。 – jondavidjohn

答えて

3

ミニファイアはコメントを削除したり、改行を挿入します。例えば、Closure Compiler's FAQは言う:

は、私は他のJavaScript minifiersと一緒に閉鎖コンパイラを使用することはできますか?

はい。 Closure Compilerは、任意の有効なJavaScriptを読み込み、有効なJavaScriptを生成するため、異なるミニライザを使用してファイルを実行する前または後に、JavaScriptファイルにClosure Compilerを適用できます。

クロージャーコンパイラーや他のミニファイアーが、入ってくるコードについて期待しているかもしれないことに注意してください。コメントを削除するマイナーは、たとえば、別のツールで必要とされるライセンスや注釈情報を削除することがあります。

時には、コメントが必要な場合があります。その場合は、改行を入れます。

ソースコードに記載する必要がある著作権表示やオープンソースライセンスのテキストがあります。 Closure Compilerがこのテキストを削除しないようにするにはどうすればよいですか?

クロージャコンパイラは、JSDoc @licenseタグをサポートしています。 @licenseタグを任意のJSDocコメントに追加して、コンパイラの出力にコメントを保存します。詳細については、Closure CompilerのJavaScriptアノテーションを参照してください。

また、一部のインタプリタのソースコードパーサーが実際に長い行でクラッシュしたり、実際にはゆっくりと実行されたりするため、細工が行間を折る傾向があります。以前

https://bugzilla.mozilla.org/show_bug.cgi?id=634444

は、我々はチャンクを扱ったため、エラーメッセージが含ま可能性がどのくらいのラインのには限界がありました。しかし、エラーメッセージには行全体が含まれるようになりました。 非常に長い行と多くのエラーがある場合は、エラーメッセージ文字列にjs_DeflateString()を呼び出して2つのコピー(jscharで作られたもの、charで作られたもの)のメモリ使用率が高いため、レシピはですs)。

122,895文字の行にエラーのヒープが発生し、1Gを超える(3バイトでchar!)がエラーメッセージになりました。

3

JavaScriptの1行目のコメントは、最初の改行文字に達しました。ミニライザーは改行を削除する前にコメントを削除し、改行がコードを壊さないようにします。例えば

、あなたはあなたが得る高度な最適化を

var _gaq=_gaq||[];_gaq.push(["_setAccount","123456"]); 

を取得する簡単な最適化をClosure Compiler

//GOOGLE TRACKING 
var _gaq = _gaq || []; 
_gaq.push(['_setAccount', '123456']); 

貼り付ける場合:

var a=a||[];a.push(["_setAccount","123456"]); 

をコメントしています両方で削除されました。

+0

私は、クライアント側の誰かがコードを手作業で「小型化」しようとしていて、これで終わってしまったでしょう。助けてくれてありがとう。 – Rondel

関連する問題