2010-06-10 13 views
23

Ich habe festgestellt, dass jedes Mal, wenn ich Google's Closure Compiler Service benutze, es einige unnötige Leerzeichen in dem kompilierten Code auf der rechten Seite der Seite angezeigt hinterlässt. Diese entsprechen Zeilenumbrüchen in der gehosteten Version des kompilierten Codes.Warum lässt Google Closure Compiler ein paar unnötige Leerzeichen oder Zeilenumbrüche?

Zum Beispiel (beachten Sie die Zeilenumbrüche, von denen jede unnötige scheint):

http://troy.onespot.com/static/stack_overflow/closure_spaces.js

Bis heute habe ich gerade sie manuell zu entfernen, aber ich bin neugierig, warum sie da sind . Soll die Zeilenlänge der gehosteten Version des Codes eingeschränkt werden, um sie lesbarer zu machen? Kann der Compiler intelligent genug sein, um diese absichtlich zu lassen oder einzufügen, um die GZIP-Komprimierung zu maximieren?

Ich weiß, dass sie eine triviale Auswirkung auf die Dateigröße haben, aber mit so viel Aufwand in die Minimierung jedes letzten Bytes im Quellskript, ist es nicht einleuchtend, warum sie da sind.

+0

Ich kann nicht darauf zugreifen [default.js] (http://closure-compiler.appspot.com/code/jsc39ddc01a5a74a754148a33d2d8f1444/default.js), der Link gibt eine Seite mit einer 'Content-Length' zurück von 0. Können Sie den Code in Ihre Frage einfügen? –

+0

Tut mir leid - ich nahm an, dass Google den kompilierten Code auf unbestimmte Zeit gehostet hat, aber anscheinend nicht. Ich habe den Link in der obigen Frage aktualisiert. – Bungle

+0

Das verrückteste Ding ist Google PageSpeed ​​Insights beschweren sich über ein paar Bytes (<1 KB) und wenn ich die optimierten Dateien herunterladen, hat die js 180K lange Zeilen, aber es gibt keine Möglichkeit, den Closure-Compiler (API oder JAVA-Anwendung) zu brechen Zeilen in beliebiger Länge (zB 180K) –

Antwort

38

unter Angabe der Closure Compiler FAQ:

Warum gibt es zufällige Zeile in kompilierte Scripts-Feeds?

Der Closure Compiler fügt absichtlich alle 500 Zeichen Zeilenumbrüche hinzu. Firewalls und Proxys korrumpieren oder ignorieren manchmal große JavaScript-Dateien mit sehr langen Zeilen. Das Hinzufügen von Zeilenumbrüchen alle 500 Zeichen verhindert dieses Problem. Das Entfernen der Zeilenumbrüche hat keine Auswirkungen auf die Semantik eines Skripts. Die Auswirkung auf die Codegröße ist gering und der Compiler optimiert die Zeilenumbruchplatzierung, so dass die Codegröße beim Zippen der Dateien noch kleiner ist.

Sie wussten, es war schlau! :)

+1

Super, das löst es! Ich hatte die FAQ nicht gesehen - danke für den Link, und ich schätze die Antwort. – Bungle

+0

Das verrückteste Ding ist Google PageSpeed ​​Insights beschweren sich über ein paar Bytes (<1 KB) und wenn ich die optimierten Dateien herunterladen, hat die js 180K lange Zeilen, aber es gibt keine Möglichkeit, den Closure-Compiler (API oder JAVA-Anwendung) zu brechen Zeilen in beliebiger Länge (zB 180K) –

+1

@JoseNobile Ich habe vor kurzem dieses linebreak Problem mit Java-Anwendung konfrontiert. Ich habe daran gearbeitet, manuelle Zeilenumbrüche zu entfernen, die vom Closing-Compiler eingeführt wurden. – Stephan

Verwandte Themen