2010-06-10 10 views
23

Я заметил, что каждый раз, когда я использую Google's Closure Compiler Service, он оставляет несколько лишних пробелов в скомпилированном коде, представленном в правой части страницы. Они соответствуют разрыву строк в размещенной версии скомпилированного кода.Почему компилятор Google Closure оставляет несколько лишних пробелов или разрывов строк?

Например (обратите внимание на разрывы строк, каждая из которых, кажется ненужным):

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

На сегодняшний день, я просто удалить их вручную, но мне интересно, почему они там , Следует ли ограничивать длину строки размещенной версии кода, чтобы сделать ее более читаемой? Может ли компилятор быть достаточно умным, чтобы уйти или вставить их намеренно, чтобы максимизировать усилия сжатия GZIP?

Я знаю, что они имеют тривиальное влияние на размер файла, но с таким большим количеством усилий, чтобы минимизировать каждый последний байт в исходном скрипте, это противоречиво, почему они там.

+0

Я не могу получить доступ к этому [default.js] (http://closure-compiler.appspot.com/code/jsc39ddc01a5a74a754148a33d2d8f1444/default.js), ссылка возвращает страницу с 'Content-Length' 0. Вы можете вставить (часть) кода в свой вопрос? –

+0

Извините, что я предположил, что Google размещал скомпилированный код на неопределенный срок, но, видимо, этого не происходит. Я обновил ссылку в вопросе выше. – Bungle

+0

Самая сумасшедшая вещь - Google PageSpeed ​​Insights жалуются на несколько байтов (<1 КБ), и когда я загружаю оптимизированные файлы, js имеет длинные строки длиной 180 тыс., Но нет способа проинструктировать компилятор Closure (API или приложение JAVA) для разрыва линии на любой длине (например, 180K) –

ответ

38

Цитируя Closure Compiler FAQ:

Почему существуют каналы случайная строка в скомпилированных скриптах?

Компилятор Closure намеренно добавляет разрывы строк каждые 500 символов или около того. Брандмауэры и прокси иногда повреждают или игнорируют большие файлы JavaScript с очень длинными строками. Добавление разрывов строк каждые 500 символов предотвращает эту проблему. Удаление разрывов строк не влияет на семантику скрипта. Влияние на размер кода невелико, и компилятор оптимизирует размещение строк, так что размер штрафа по размеру кода даже меньше, когда файлы загружаются.

Вы знали, что это было умно! :)

+1

Удивительно, что решает! Я не видел FAQ - спасибо за ссылку, и я ценю ответ. – Bungle

+0

Самая сумасшедшая вещь - Google PageSpeed ​​Insights, жалуются на несколько байтов (<1 КБ), и когда я загружаю оптимизированные файлы, js имеет длинные строки длиной 180 тыс., Но нет способа проинструктировать компилятор Closure (API или приложение JAVA) для разрыва строки на любой длине (например, 180K) –

+1

@JoseNobile Недавно я столкнулся с этой проблемой линейки с Java-приложением. Я работал над этим, удаляя вручную разрывы строк, введенные компилятором закрытия. – Stephan